reactjs – React Flux – 应该存储数据存储在组件状态还是道具?

前端之家收集整理的这篇文章主要介绍了reactjs – React Flux – 应该存储数据存储在组件状态还是道具?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果通量存储是保持数据状态的单例,为什么组件在访问存储时使用setState和not setProps?这不是意味着我开始在两个(或更多)地方保存应用程序状态?

Flux / React文档和示例似乎都指向setState作为首选解决方案,但我与一些同事在工作中进行了有趣的对话,并想知道是否有其他人遇到了

编辑:
你可以看到我在这里url说的:
https://github.com/facebook/flux/blob/master/examples/flux-chat/js/components/ThreadSection.react.js

注意ThreadSection是一个子组件,即直接从商店获取数据并将其用作状态。

如果你遵循React“方式”,我会期望状态由商店管理 – 而不是子组件。

我们想到的解决方案是获取顶层组件中的所有商店(作为道具),并根据需要将它们传递给子组件。但是这变得相当丑陋,很快。

我们这样做是因为setProps不适用于子组件

理解你应该有2种组件。有状态的组件和视图组件。

状态组件可以具有3种状态:初始状态,用户输入状态和数据存储状态。

有状态的组件就像你正在组装的“小部件”中的小入口点。对于下游依赖或数据注入,不再有单个应用程序范围的入口点,因为所有这些小部件都有自己的独立生命周期。这就是为什么他们自己需要访问&听商店。

除了行为属性,有状态组件不通过上游属性接收实际数据。

状态组件管理自己的状态,并将其传递给子级通过下游属性渲染。

状态组件通常不直接呈现html DOM元素。它们更像MVC中的控制器,并使用其他转储组件(如MVC中的视图)来实际呈现DOM元素。

Dumber组件就像视图,所以它们只包含渲染DOM元素的逻辑。将它们看作handlebars.js模板,它只接收属性,只是将它们转换为DOM元素,可能带有循环等。它们是无状态渲染器。

希望这回答你的问题。

猜你在找的React相关文章