state
将 react 与 redux 一起使用时,可以在对象中存储本地状态吗?通过动作将所有内容存储在状态树中很快就会变得乏味。感觉某些状态仅与应用程序的呈现/显示相关,而不与逻辑相关。通过演示,我指的是动画/闪烁、面板的展开/收缩状态、表格中的排序标准等等。
在 react 和 redux 中处理本地状态
IT技术
reactjs
redux
2021-05-23 11:47:13
3个回答
这很难回答,因为不同的人会将组件的不同部分归类为“状态”。
由于 Redux 与应用程序状态有关,因此根据经验,您希望应用程序级别的“撤消/重做”按钮生效的任何事情都应该作为 Redux 操作发生。Redux 有一个撤销存储插件的事实只是因为应用程序状态的范围。
当然有些动画是不可撤销的,因为这些动画应该真正与应用程序状态的变化相关联,而不是本身的变化。不过,您的其余示例听起来非常像应用程序状态。如果我对表格进行排序,然后按下撤消,我绝对希望排序会被撤消。
现在在redux 常见问题解答中回答了这个问题:
对此没有“正确”的答案。一些用户更喜欢在 Redux 中保留每条数据,以始终维护其应用程序的完全可序列化和受控版本。其他人更喜欢在组件的内部状态中保留非关键或 UI 状态,例如“此下拉列表当前是否打开”。
使用本地组件状态很好。作为开发人员,您的工作是确定构成您的应用程序的状态类型,以及每个状态应位于何处。找到一个适合你的平衡点,然后坚持下去。
正如 Tyrsius 已经提到的 - 对此有不同的看法。
对我们来说 - 作为经验法则 - 我们确保跟踪应用程序状态的所有内容,我们希望能够查看我们是否可以远程连接到某些用户当前会话。
如果我们不关心鼠标是否悬停在某个元素上,我们可能只为此使用组件状态(如果我们需要状态,那么)。
不过,我们的脚本中只有少数这样的情况,因为我们想确切地知道用户在大多数情况下看到的内容以便于调试。
您提到了面板的展开/折叠状态 - 我们有时会创建组件来为我们处理这种展开/折叠的逻辑,因此我们不必一直为我们创建的每个面板编写这样的 reducer。
我们可以像这样使用这些组件:
<Panel id="somePanelId">some content</Panel>
面板组件将确保跟踪应用程序状态内的面板活动状态。这样就可以很容易地保持你的代码简单而不让它爆炸。
其它你可能感兴趣的问题