Javascript 反应如何从子组件更新App.js中的数据

Javascript 反应如何从子组件更新App.js中的数据,javascript,reactjs,Javascript,Reactjs,我正在构建一个React应用程序。我没有后端服务器。相反,我使用了一个名为securities.json的.json文件作为后端服务器。json文件列出了每个证券中的证券和价格列表 我试图做的是将更新后的价目表从其子组件提交到App.js上的securities.json(父组件)。我注意到,当我在价格弹出窗口中添加一个新的价格,然后关闭它,但再次检查价格弹出窗口。我输入的新价格消失了。我想不出怎么解决它。我正试图按照一位开发者的建议将其传递给App.js 有人能看看我在CodeSandBox中

我正在构建一个React应用程序。我没有后端服务器。相反,我使用了一个名为
securities.json
的.json文件作为后端服务器。json文件列出了每个证券中的证券和价格列表

我试图做的是将更新后的价目表从其子组件提交到App.js上的securities.json(父组件)。我注意到,当我在价格弹出窗口中添加一个新的价格,然后关闭它,但再次检查价格弹出窗口。我输入的新价格消失了。我想不出怎么解决它。我正试图按照一位开发者的建议将其传递给App.js

有人能看看我在CodeSandBox中的代码吗? 两种解决方案:

  • 使用Redux:

  • 使用反应上下文系统:


  • 您还可以将更新函数作为道具传递给子组件,以更新父组件的状态。

    我的猜测是,价目表是在构造函数中设置的。在那里,状态是通过道具设置的。更改道具时,价目表状态不会更新,因为设置状态发生在构造函数中,该构造函数只执行一次。当道具发生变化时,您需要更新状态

    这就是我所说的代码

      constructor(props) {
        super(props);
    
        this.state = {
          priceArr: this.props.pricelist,
          // newPriceArr: this.props.updatePrice,
          showPricePopup: false,
          addPricePopup: false,
          isToggleOn: true,
          date: props.date || "",
          number: props.number || ""
        };
      } 
    

    当道具更改时,您可能需要使用设置状态。

    我无法使其正常工作,不断收到有关未定义的
    closePopup()
    的错误。