React JS:HOC(重组)或 Redux [关闭]
Posted
技术标签:
【中文标题】React JS:HOC(重组)或 Redux [关闭]【英文标题】:React JS: HOC(Recompose) or Redux [closed] 【发布时间】:2019-05-07 03:08:52 【问题描述】:我必须处理当前使用 Recompose 的 compose 功能开发的 React JS 应用程序。 [https://github.com/acdlite/recompose][1]
根据从头开始重写应用程序的计划,Recompose 或 Redux 的最佳选择是什么?
Recompose creator 停止对此包的主动维护。我该怎么办?继续使用 Recompose 还是迁移到 Redux?
【问题讨论】:
Recompose 不是 Redux 的替代品。它们是完全不同的库,用于不同的目的。你将苹果与橙子进行比较。 感谢@estus 的回复。你能再解释一下吗? 我不确定这个解释是什么。 Redux 是状态管理库,而 Recompose 不是。 【参考方案1】:正如@estus 所说,Redux 和 recompose 不是等价的。
你可能知道,Redux 只是为了保持应用程序的状态,这意味着当你消费一个服务并获得响应,修改一些 UI 组件的值等时,一个动作被调度并通过减速器它更新商店中应用程序的状态。然后,订阅 store 的 UI 组件被重新渲染。
另一方面,Recompose 允许您增强功能组件。
例如,添加自定义道具、添加生命周期以及向功能组件添加状态和处理程序。
此外,recompose 的理念是保持组件尽可能薄,并将其拆分以分离职责,然后使用增强器组合它。
这很有意义,因为您可以在不同的组件中重复使用重复的逻辑。
Here 一个不使用 Recompose 的例子
Here 同样使用 Recompose
作为结论,我想说的是,您可以使用 Redux 来保持状态并使用 Recompose 来保持简单,分离职责,通过封装特定逻辑的小增强器来增强功能组件。
在未来的 React 版本中,我认为 Recompose 的大多数实用程序都可以添加到库中。
【讨论】:
也许应该注意,作者已经宣布不推荐使用 recompose:“今天,我们宣布了 Hooks 的提案。Hooks 解决了我三年前尝试使用 Recompose 解决的所有问题,以及更多最重要的是。我将停止对该软件包的积极维护(可能不包括与未来 React 版本兼容的错误修复或补丁),并建议人们改用 Hooks。” 也许你是对的,但 Hooks 并不能解决 Recompose 所做的所有事情,如果你决定将 recompose 用于新项目,这仍然取决于你。 不一定是我的意见,这是 Facebook 开发人员、React 的核心贡献者和作者或 Recompose 的 Andrew Clark 的意见。我真的很喜欢重构顺便说一句。以上是关于React JS:HOC(重组)或 Redux [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jest 和 Enzyme 测试具有 Router、Redux 和两个 HOC 的 React 组件?
Typescript 无状态 HOC react-redux 注入道具打字
javascript 尝试用`render` prop替换react-redux的`connect` HoC。