Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应组件交互和全局状态更改_Javascript_State_Reactjs - Fatal编程技术网

Javascript 反应组件交互和全局状态更改

Javascript 反应组件交互和全局状态更改,javascript,state,reactjs,Javascript,State,Reactjs,我对反应很陌生,只是尝试一下而已。我想知道处理组件间通信的一些常见模式或内置库是什么。例如,我有一个输入组件和一个“列表”组件,它根据输入控制器中的内容从服务器更新。想象一个自动完成框。既然组件具有表示逻辑,那么如果这两个组件不能“除了”呢?它们位于页面的不同部分,因此有两个不同的控制器 另外,如果我有一个通过Ajax工作的登录/注销按钮呢?我想象页面上有许多不同的组件对登录/注销操作作出反应,它们根据全局“已登录”状态和从服务器检索到的特定登录用户的数据重新配置自己 对这些变化作出“反应”的最

我对反应很陌生,只是尝试一下而已。我想知道处理组件间通信的一些常见模式或内置库是什么。例如,我有一个输入组件和一个“列表”组件,它根据输入控制器中的内容从服务器更新。想象一个自动完成框。既然组件具有表示逻辑,那么如果这两个组件不能“除了”呢?它们位于页面的不同部分,因此有两个不同的控制器

另外,如果我有一个通过Ajax工作的登录/注销按钮呢?我想象页面上有许多不同的组件对登录/注销操作作出反应,它们根据全局“已登录”状态和从服务器检索到的特定登录用户的数据重新配置自己

对这些变化作出“反应”的最佳方式是什么?谢谢

您应该结帐并付款。
这有点像酒吧/酒吧系统,但没有酒吧/酒吧系统的问题。其优点是所有事件都朝一个方向流动,这使得体系结构更加简单和可扩展。

如果您还没有,您应该查看Facebook的官方文档。他们有一个非常全面的教程,涵盖了您将遇到的90%的场景,包括组件交互的最佳实践。他们也非常擅长从无知识开始构建。只需约20分钟即可完成:


正如在另一个答案中提到的,Redux是一个处理应用程序状态和保持组件分离的神奇库,这些组件不应该相互了解。基本上,您可以拥有父和子组件,但是如果您有一个具有超过2个级别的子级的组件,则应该考虑使用ReDux(或FLUX)来处理无关组件之间的状态。redux解决的问题只是打破了这些依赖关系,仍然允许组件拥有单一的真实来源。他们的官方文档也非常好:

因为问题是专门针对React的,所以更容易查看实际的
Flux
实现
redux
redux-React