Tengo esta función en el componente principal y estoy tratando de llamar a este método / función en el niño, así:

buttonPressed = () => {
  console.log('button pressed')
}

<childComp ref={ref => this.feedback = ref}
           onPress={this.buttonPressed}
/>

En niña:

<Animated.View>
  ...   // other views
  <View>
    <TouchableOpacity onPress={this.props.buttonPressed}> // calling here
     ...
    </TouchableOpacity>

  </View>
</Animated.View>

No importa lo que intenté, no funcionó.

3
Yasir 14 nov. 2017 a las 13:51

2 respuestas

La mejor respuesta

Está pasando el accesorio de prensa al niño y llamando a buttonPressed en niño. debería ser así:

<Animated.View>
  ...   // other views
  <View>
    <TouchableOpacity onPress={this.props.onPress}> // calling here
     ...
    </TouchableOpacity>

  </View>
</Animated.View>
3
Rajat Gupta 14 nov. 2017 a las 11:00

Creo que en el componente hijo debe llamar a this.props.onPress(), porque el nombre de la propiedad que está pasando es onPress. Además, no olvide poner () cuando desee llamar a la función. Entonces debería ser:

<Animated.View>
  ...   // other views
  <View>
    <TouchableOpacity onPress={this.props.onPress()}> // calling here
     ...
    </TouchableOpacity>

  </View>
</Animated.View>
0
Hernán Albertario 14 nov. 2017 a las 11:04