Estoy tratando de llamar a la función de eliminación que está en mi componente ShoppingCartScreen en mi componente CartList. También quiero pasar valores de la clase de componente CartList. Seguí teniendo problemas cuando traté de llamar al complemento en mi clase CartList.
export default class ShoppingCartScreen extends Component { remove = (qty) => { let q = qty if (q > 1) { q = q - 1; this.setState({ qty: q }) } } render() { return ( <View> <ScrollView backgroundColor='#bbb'> <CartList remove = {this.remove} /> </ScrollView> </View> ) } export default class CartList extends Component { render() { return ( <View> <TouchableOpacity onPress={this.props.add(this.state.qty)}> <Icon name="md-close" size={25} color='black' style={{ height: 25, width: 25 }} iconStyle={{ marginRight: 0 }}/> </TouchableOpacity> </View> ) }Primero, pasa remove a CartList y luego dentro llama a this.props.add , por lo que necesita cambiar el nombre. En segundo lugar, debe actualizar this.props.remove call a una función de flecha:
<TouchableOpacity onPress={() => this.props.remove(this.state.qty)}> onPress espera que pase una función para llamar. Cuando se procesa el componente, this.props.add(this.state.qty) se evalúa inmediatamente porque ya es una llamada de función. Es por eso que debe usar una función de flecha en este caso.