在redux中,你会在switch语句中为一个以状态作为参数的特定动作调用一个函数,改变它并返回一个新的状态?
function reducer(state = DEFAULT_STATE, action) {
let count = state.count
switch (action.type) {
case CHANGE_COLOR:
return { color: action.color }
case UPDATE_LANGUAGE:
return updateLanguage(state, action)
default:
return state
}
}
在上面的函数中,updateLanguage
会是什么样的函数?
答案 0 :(得分:3)
由于您正在传递state
和action
,因此您实际上只是创建了另一个reducer,假设您返回了新的state
:
type Reducer<S, A> = (state: S, action: A) => S
如果您愿意,将工作拆分为较小的Reducer的行为是Redux中广泛使用的模式 - 或者来自文档:
这称为reducer组合,它是构建Redux应用程序的基本模式。
看一看this example - 我们可以看到Todos
和Todo
减速器,每个减速器处理一大块状态和一个特定动作。请注意,Todo
reducer只处理一个todo
对象。通常就是这种情况:您经常希望将state
的较小块传递给子减速器,而不是state
。
然而,那就是说,Redux的美妙之处在于你可以根据自己的需要编写减速器。唯一的规定是您的reducer函数必须接受state
和action
,并且它必须返回 new state
对象。
答案 1 :(得分:0)