reducer寫得沒那麼抽象也不會有人怪你的。^_^dom
reducer其實只有一個,由不一樣的reducer composition出來的。因此,spa
例如:code
//reducer01.js const disposeFetchRandom = (preState = {}, action) => { switch (action.type) { case `${REQUEST_BEGIN}${action.condition}`: case `${RECEIVED}${action.condition}`: case `${RECEIVE_FAILED}${action.condition}`: //do something to state default: return preState; } }
和作用域
//reducer02.js const disposeCategories = (preState = {}, action) => { let condition = action.condition switch (action.type) { case `${REQUEST_BEGIN}${condition}`: case `${RECEIVED}${condition}`: case `${RECEIVE_FAILED}${condition}`: //do something default: return preState } }
針對上面兩個Reducer:it
dispatch({type: "REQUEST_BEGIN_RANDOM"})
時,reducer01.js
與reducer02.js
都會對其進行處理dispatch({type: "REQUEST_BEGIN_RANDOM})
和dispatch({type: "REQUEST_BEGIN_CATEGORIES"})
這兩個action//reducer01.js const RANDOM = "_RANDOM"; const disposeFetchRandom = (preState = {}, action) => { switch (action.type) { case REQUEST_BEGIN + RANDOM://必須明確指定action.type case RECEIVED + RANDOM: case RECEIVE_FAILED + RANDOM: //do something to state default: return preState; } }