gpt4 book ai didi

redux - 为什么在 Redux 中分离 action + reducers?

转载 作者:行者123 更新时间:2023-12-04 04:37:31 25 4
gpt4 key购买 nike

我已经看到了将 action 和 reducer 分开的论点,因为它们具有多对多的关系。

我认为这实际上并不适用于 Redux。因为只有 1 个数据存储,所以对 reducer 的操作应该是一对多的。

通常,reducer 适用于特定数据存储的特​​定更改。

MY_ACTION = "MY_ACTION"
function reducer(state, action) {
switch(action.type) {
case MY_ACTION: // stuff with my action to create new state
default: return state
}
}

我们可以将多个 reducer 与 combineReducers那么为什么不使用 Action 本身定义 Action 的处理程序。

例如
class Action {
constructor(type) {
this.type = type
this.handlers = []
}
add_handler(handler) {
this.handlers += handler
}
get_reducer() {
reducer = combineReducers(this.handlers)
return (state, action) => {
if(action.type == this.type) {
return reducer(state, action)
}
return state
}
}
}

使用“鸭子”模式,我们最终将主 reducer 与 Action 声明放在同一个模块中。

有什么理由让 reducers + action 与 redux 分开吗?

最佳答案

将 action creators 与 reducer 函数分开的主要原因是 reducer 函数必须是纯函数。如果你想在 action creator 中做一些事情,比如异步 API 调用,那么你不能把它放在 reducer 中。对此有很好的解释here .

关于redux - 为什么在 Redux 中分离 action + reducers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com