如何在本机中将道具从父母传递给孩子?

时间:2018-07-20 10:34:02

标签: javascript reactjs react-native

是否有任何想法如何在react native中从父项向子组件发送道具。我在react中听说过,但在react-native中不知道。 我想要的只是当用户按下AddToCart按钮(实际上包裹在可触摸的不透明的onpress事件中)时,道具应该发送到另一页。Somone告诉我有关使用redux的信息,但我认为这也可能发生在react-native中。

  

底线:按下该按钮时,应该将道具发送到另一页。

ItemDetais页面

应该从哪里发送道具。

cart() {
  let product_id = this.props.navigation.state.params.id;
  AsyncStorage.getItem('cart_id')
    .then((_id) => {
      API.post_data(_id, product_id)
        .then((data) => {
          if (data) {
            // this.props.navigation.navigate('Cart', {id: data.cart.id})
            // was using this method.But when I directly open
            // cart page it gives me an error undefined is not
            //  an object..blah blah
          }
        })
    })
}

<TouchableOpacity onPress={()=> { this.cart() }} >
    <Text>AddToCart<Text>
</TouchableOpacity>

购物页面

应该接收道具的地方。

componentDidMount() {
  let cart_id = this.props.navigation.state.params.id;
  // above method is just total waste.
  API.getCartItem(cart_id)
    .then((response) => {
    if (response) {
      this.setState({
        data: response
      });
    } else {
      alert('no data')
    }
  })
}

1 个答案:

答案 0 :(得分:0)

根据React Navigation docs,此方法应该有效:

componentDidMount() {
  const { navigation } = this.props;
  // The 'NO-ID'  is a fallback value if the parameter is not available
  const cart_id = navigation.getParam('id', 'NO-ID');
  ...
}