6

最近发现了这个库:https ://easy-peasy.now.sh/ 实现了,不得不说还不错。为什么它不像redux那么流行?为什么人们在可以使用它时倾向于使用redux?两者的优点和缺点是什么?还想知道当我可以做这样的事情时,状态的不变性是如何保存在简单的 peasy 中的:

addProduct: action((state, payload) => {
    state.productIds.push(payload);
  })

显然它会改变状态..也许它不会改变实际状态?一般来说,想知道是否保留了所有 redux 原则,两者之间的主要区别是什么?

4

1 回答 1

9

easy-peasy是对 Redux 的抽象,它在内部使用 Redux 来管理状态。

有些人会选择使用 Redux,因为他们可以完全控制 action、action creators、reducers 等的实现方式。然而,easy-peasy 的用户被赋予了一种使用 Redux 的固执己见的方式,这大大减少了您必须编写的样板代码量。

至于它如何在 reducer 中强制执行不变性,而编写的代码看起来像是在改变数据,easy-peasy 实际上是在“幕后”使用Immer;引自 Immer 网站:

“基本的想法是,你将所有的更改应用到一个临时的 DraftState,它是 currentState 的代理。一旦你的所有突变完成,Immer 将根据对草案状态的突变产生 nextState。这意味着你可以通过简单地修改数据与您的数据进行交互,同时保留不可变数据的所有好处。”

正如easy-peasy 网站上所述,该库允许扩展底层 Redux 存储,它允许您插入 vanilla Redux 中间件/增强器。

于 2020-05-24T01:00:36.130 回答