看到Redux官網上Reducer拆分后,最后生成的state的組合有點懵,主要是對combineReducers()這個工具類不了解,其實該方法是消除了一些樣板代碼。
如todoApp
事例:
import { combineReducers } from 'redux'const todoApp = combineReducers({visibilityFilter,todos
})export default todoApp
復制代碼
上面的寫法跟下面完全等價:
export default function todoApp(state = {}, action) {return {visibilityFilter: visibilityFilter(state.visibilityFilter, action),todos: todos(state.todos, action)}
}
復制代碼
你也可以給它們設置不同的 key,或者調用不同的函數。下面兩種合成 reducer 方法完全等價:
const reducer = combineReducers({a: doSomethingWithA,b: processB,c: c
})
復制代碼
function reducer(state = {}, action) {return {a: doSomethingWithA(state.a, action),b: processB(state.b, action),c: c(state.c, action)}
}
復制代碼