【问题标题】:Do you need redux for a multiuser Reactjs app?多用户 Reactjs 应用程序需要 redux 吗?
【发布时间】:2021-04-08 07:23:15
【问题描述】:
也许有一个幼稚的问题,但我真的找不到一个直接的答案,你什么时候更喜欢 Redux 而不是 React Hooks。
我是 Reactjs 的新手,目前我正在为一个客户端开发一个多用户、博客、在线商店应用程序。该项目分为两个阶段:
第 1 阶段 - 仅涉及与 Firebase 数据库的 CRUD 交互
但
第 2 阶段 - 将拥有多用户系统和在线商店 - 基于每个用户通过观看添加和发布博客赚取积分的系统来销售游戏。
现在,第 1 阶段很简单,React Context hook 已经足够了,但现在我想知道 React Hooks 是否足以满足第 2 阶段的需要,还是我必须花时间学习 Redux?
【问题讨论】:
标签:
java
reactjs
react-redux
react-hooks
【解决方案1】:
随着应用程序变得越来越复杂,我建议切换到 redux。
在 redux 中,组件订阅多个状态,并且仅当这些状态发生变化时才会重新渲染。
在上下文中,每个组件都有整个上下文对象,即使不相关的状态发生变化也会重新渲染。
如果性能不是优先事项,您可以使用坚持上下文。
【解决方案2】:
上下文不会将发生的事情(例如用户点击保存)与发生这种情况时应用程序需要执行的操作(例如保存一些数据)以及如何获取结果数据(例如失败、成功的数据)分开。
在 redux 中,所有这些东西都是分开的;
- 发生了什么事:调度一个动作
- 发生情况时实现:reducers 和中间件
- 组件或中间件需要保存状态:选择器
redux 使用的模式是事件存储,可以在 redux-devtools 中使用,以在更改 reducer 后重放一系列操作,以查看是否修复了问题,以及 CQRS 将写入状态与获取状态值分开,从而导致松散耦合的代码和更好的可重用性。
Redux 具有更多的抽象性并且需要更长的设置时间,但可以更轻松地实现复杂的需求(如果您知道自己在做什么)和维护您的项目。
上下文可防止道具钻探,并且易于实现简单的要求,但随着项目复杂性的增加,它会变得更加困难。