Javascript 反应:通过单击不相关的组件更新组件状态

Javascript 反应:通过单击不相关的组件更新组件状态,javascript,reactjs,frontend,Javascript,Reactjs,Frontend,我试图通过建立一个简单的购物网站来学习React,在这个网站上你可以向购物车添加物品。我在每个项目的末尾都有一个按钮组件,可以单击并添加到购物车中。但是,我需要这个按钮来更新我的item count组件的状态,方法是将其递增1。按钮组件和项目计数组件是完全独立和不相关的。我尝试让app.js文件管理item count组件的状态,并将一个函数传递给button组件,但失败惨重。我如何才能做到这一点?一个选项是这两个组件是否具有父子关系?否,它们没有父子关系。我以前考虑过这一点,但我不明白如果这两

我试图通过建立一个简单的购物网站来学习React,在这个网站上你可以向购物车添加物品。我在每个项目的末尾都有一个按钮组件,可以单击并添加到购物车中。但是,我需要这个按钮来更新我的item count组件的状态,方法是将其递增1。按钮组件和项目计数组件是完全独立和不相关的。我尝试让app.js文件管理item count组件的状态,并将一个函数传递给button组件,但失败惨重。我如何才能做到这一点?

一个选项是这两个组件是否具有父子关系?否,它们没有父子关系。我以前考虑过这一点,但我不明白如果这两个组件呈现在页面的不同部分,如何建立这种关系。不过我会读到提升状态。提升状态到最近的共同祖先是一种方式,但如果两个组件之间有一定距离,可能会导致大量的“支柱钻孔”,这已经成为一种反模式。react是“轻量级”应用程序状态的解决方案,上下文提供程序的子树中的任何组件都可以订阅上下文。上下文值可以是任何值,因此具有应用程序状态和更新状态的函数的对象很容易实现。一个选项是这两个组件是否具有父子关系?不,它们没有父子关系。我以前考虑过这一点,但我不明白如果这两个组件呈现在页面的不同部分,如何建立这种关系。不过我会读到提升状态。提升状态到最近的共同祖先是一种方式,但如果两个组件之间有一定距离,可能会导致大量的“支柱钻孔”,这已经成为一种反模式。react是“轻量级”应用程序状态的解决方案,上下文提供程序的子树中的任何组件都可以订阅上下文。上下文值可以是任意值,因此具有app state和更新state函数的对象实现起来相当简单。