什么时候使用redux?

许多人将 Redux 状态管理库与 React 一起使用时遇到的一个常见问题是何时开始使用它。趋势是一开始就一直使用它,但是以我的经验,这种方法有点过分。

Redux 的 action 和 reducer 可以创建一些额外的样板,因此最好在何时使用它时有一套标准。

使用 Redux 的原因:

1. 需要将相同的应用程序状态映射到多个容器组件。 会话状态就是一个很好的例子。首次加载应用程序时,通常需要与标题栏和每个页面中的各个组件共享有关用户的信息。这些组件可能没有直接关系,因此 Redux 提供了一种方便的共享状态的方法。

2. 可以从任何地方访问的全局组件。 在应用程序的整个生命周期中(通常是在重新加载入口点时,对于单页面应用程序来说),存在的组件是很常见的,它们会执行诸如显示通知,小吃栏,工具提示,模式,交互式教程等操作。 ,您可以创建将命令分配给这些组件的操作,例如,如果代码向后端发出异步请求,则该代码可以在请求失败时调度 show 快餐栏操作。如果没有 Redux,您将需要其他事件系统,或者每次使用它时都要实例化快餐栏组件。

3. 通过多个组件层次结构传递的 props 过多。 如果一个较高级别的组件提供了十二个 props,并且仅使用其中两个,其余的则传递给一个较低级别的组件,那么请考虑使用 Redux 进行重构。对于仅提供布局样式但不需要大量数据或配置的包装器组件,这种情况经常发生。在这种情况下,将 Redux 直接侧链到较低级别的组件中更为实用。

4. 使用 setState 进行状态管理会使组件膨胀。 这是相当主观的,但是超过几百行代码的组件开始变得难以推理和维护。将状态管理分离为简化器会拆分代码并使代码更具可读性。

5. 缓存页面状态。 当用户在页面上做一些事情,然后转到另一个页面并返回时,通常期望页面处于相同状态。通过将页面状态保存在后端并在页面加载时调用它,可以解决某些问题。但是,诸如搜索输入值和扩展/折叠的手风琴之类的东西通常在后端存储时过头了。由于 reducer 通常会在整个会话中进行初始化和运行,因此它们可以缓存页面状态,因此一切保持不变。

如果您正在使用的组件不满足以上任何条件,则 setState 可能会很好。Redux 实际上只是成为在正确情况下使用的工具。

我建议您从一开始就考虑使用 Redux。这与我在社交媒体上看到的其他观点不同。很多人说只有在绝对需要时才开始使用 Redux。但是,以我的经验来看,状态管理可能会变得很丑陋且很难快速维护。此外,出于上述原因 1-3,Redux 实际上可以减少样板并简化代码。对我来说,它已经成为必不可少的工具。

参考链接

https://medium.com/@fastphrase/when-to-use-redux-f0aa70b5b1e2

© 2022  Arvin Xiang
Built with ❤️ by myself