如何在 Redux/React - Redux-UI 中处理 UI 状态?

IT技术 javascript reactjs state state-management
2021-04-29 18:28:45

我正在研究存储 UI 状态的最佳方式是什么,我应该使用 Redux-UI ( https://github.com/tonyhb/redux-ui ) 之类的东西来存储/管理 UI 状态吗?还是我应该为 UI 创建自己的操作/减速器?

另外...当我存储了 UI 状态时,如何确保浏览器刷新后,我仍然拥有完全相同的页面状态?就像普通网页将包含从服务器获取的数据一样。

我有实施了 thunk 中间磨损的 Redux 和一个商店。到目前为止,我在过去的几个月里一直在使用 React。

谢谢!昆顿

1个回答

我们的团队为此花了几天时间。我们想要 UI 状态而不是将这些状态放入 Redux 的状态树的原因可能是:

  1. 这些 UI 状态仅与极少数组件相关。但有时我们需要在它们之间共享这些状态。例如,一个 Button 控制一个 Modal,它们都需要读/写 'isModalOpen' 状态。

  2. 这些状态不是数据,它们是 UI 首选项,可以在卸载组件时将它们重置为默认值。将它们保留在单个 Redux 存储中听起来像是在污染状态树。

我们尝试了:

  1. 为 UI 创建一个单独的 redux 状态树。
  2. 添加一个主分支,为所有“UI”状态说“state.UI”。

但是,所有这些都涉及必须使用/实现自定义中间件、动作和减速器。难的。

最后,我制作了react-provide-state它真的很好用。它的唯一缺点是您无法在浏览器控制台中轻松看到 ui 状态,例如 Redux 树中的状态。并且您只能通过 UI(用户操作事件回调)更新状态。这是公平的,这是我们正在谈论的 UI 状态。