常见问题

常见问题

Redux 常见问题:组织 State

必须将所有 state 都维护在 Redux 中吗? 可以用 React 的 setState() 方法吗?如何在 state 中组织嵌套及重复数据?

组织 State

没有 “标准”。有些用户选择将所有数据都在 Redux 中维护,那么在任何时刻,应用都是完全有序及可控的。也有人将类似于“下拉菜单是否打开”的非关键或者 UI 状态,在组件内部维护。适合自己的才是最好的。

使用局部组件状态是更好的。作为一名开发者,应该决定使用何种 state 来组装你的应用,每个 state 的生存范围是什么。在两者之间做好平衡,然后就去做吧。

这里有一些将怎样的数据放入 Redux 的经验法则:

应用的其他部分是否关心这个数据?是否需要根据需要在原始数据的基础上创建衍生数据?相同的数据是否被用作驱动多个组件?能否将状态恢复到特定时间点(在时光旅行调试的时候)?是否要缓存数据(比如:数据存在的情况下直接去使用它而不是重复去请求他)?

有许多开源组件实现了各式各样在 Redux store 存储独立组件状态的替代方法,比如 redux-ui、 、 redux-react-local等等。还可以将 Redux 的原则和 reducers 的概念应用到组件层面,按照 的情形。

补充资料

@dan_abramov/you-might-not-need-redux-be46360cf367">You Might Not Need Redux/a-case-for-setstate-1f1c47cd3f73#.dwhuf0g8f">A Case for setStateHow to handle state in React. The missing FAQ.

The 5 Types Of React Application State

讨论

#1098: Using Redux in reusable React component#1385: What are the disadvantages of storing all your state in a single immutable atom?Twitter: Using a reducer to update a componentReddit: “When should I put something into my Redux store?”Stack Overflow: Should all component state be kept in Redux store?

强烈推荐只在 store 中维护普通的可序列化对象、数组以及基本数据类型。虽然从 技术 层面上将非序列化项保存在 store 中是可行的,但这样会破坏 store 内容持久化和恢复能力,以及会干扰时间旅行。

补充资料讨论

#1248: Is it ok and possible to store a react component in a reducer?#1407: Just sharing a great base class

当数据存在 ID、嵌套或者关联关系时,应当以 “范式化” 形式存储:对象只能存储一次,ID 作为键值,对象间通过 ID 相互引用。将 store 类比于数据库,每一项都是独立的 “表”。 、 redux-orm 此类的库能在管理规范化数据时提供参考和抽象。

补充资料文档

Advanced: Async ActionsRecipes: Structuring Reducers - Prerequisite ConceptsExamples: Tree View

https://medium.com/@adamrackis/querying-a-redux-store-37db8c7f3b0f

讨论

#815: Working with Data Structures#994: How to cut the boilerplate when updating nested entities?#1269: Add tree view exampleTwitter: state shape should be normalized

相关推荐

手机话筒坏了修要多久,手机话筒坏了修要多久才能修好
Apple ID被盗用
在哪个应用商店能下载365

Apple ID被盗用

📅 07-01 👍 968
菠萝放多久,怎么判断菠萝还能不能吃
365bet返水多少

菠萝放多久,怎么判断菠萝还能不能吃

📅 06-29 👍 432
“撸管”在医学上的含义是什么?
365平台客服电话

“撸管”在医学上的含义是什么?

📅 06-29 👍 150
支付宝卡通怎么激活,支付宝卡通认证在哪里
365bet返水多少

支付宝卡通怎么激活,支付宝卡通认证在哪里

📅 06-28 👍 402
VR 产业思考和分析(二):为什么需要 VR 产品?
365平台客服电话

VR 产业思考和分析(二):为什么需要 VR 产品?

📅 06-28 👍 47