道具未被传递 - React Native

时间:2018-04-24 09:47:07

标签: javascript reactjs react-native

我正在使用react-native-modalbox来显示模态并将数据保存为结果。

当我保存数据时,我的模态可以访问父平面列表,因此我可以正确调用getData()函数,平面列表反映了最新的更新:

模态 - 按下保存按钮时执行saveItem()。

  saveItem = async () => {
    ...
      this.props.parentFlatList.getData();
      this.props.progress.getData(); //This function call returns an error
      this.closeModal();
  };

- onPressAdd函数打开模态框

  constructor(props) {
    super(props);
    this.state = {
        ...
    };
    this.onPressAdd = this.onPressAdd.bind(this);
  }

  ...

  onPressAdd = () => {
    this.refs.addFoodModal.showAddFoodModal();
  }

  <AddFoodModal ref={'addFoodModal'} parentFlatList={this} />

但是,当我尝试将模态链接到另一个父级时,我收到此错误:

Possible Unhandled Promise Rejection (id: 0):
TypeError: Cannot read property 'getData' of undefined

我只是希望模态调用两个父节点中的getData()函数,以便它们都在其状态中接收更新的数据。

另一位家长 - 这不会打开模态,但我认为它可以像其他父母一样将自己作为道具传递下去?

  <AddFoodModal ref={'addFoodModal'} progress={this} />

1 个答案:

答案 0 :(得分:0)

不知道你到哪里progress,如果我理解正确,你可以将progress作为<Parent progress={progress} />之类的道具传递给你的父组件,然后在你的子模态组件中你可以做

同样将this传递给子组件不是一个好习惯,您应该只将实际需要的内容传递给子组件,以避免不必要的重新渲染,这将影响性能。在您的代码中,您应该将getData作为道具传递给子组件,而不是this