那麼我個人甚至通過聲明一個常量文件來激怒我。它膨脹了我的項目,並且捆綁包的大小不斷增加。
我會說如果你有一個減速器做不同的動作相同的工作,你應該看看higher order reducers。鏈接來自redux docs本身。
我會嘗試在下面的代碼的幫助下解釋這一點。
考慮你有常量文件中,我做
export default RECEIVE_DICT_2 = 'RECEIVE_DICT_2'
export default RECEIVE_DICT_1 = 'RECEIVE_DICT_1'
考慮你有減速
首先減速
const state = {
dict : {},
}
function firstReducer(state = state,action){
switch(action.type){
case 'RECEIVE_DICT_1':
return Object.assign({},state,{
dict : action.dict
})
}
二減速
const state = {
dict : {},
}
function secondReducer(state = state,action){
switch(action.type){
case 'RECEIVE_DICT_2':
return Object.assign({},state,{
dict : action.dict
})
}
現在,如果你看到兩個減速做完全一樣的事情,但同時調度的行動,因爲我們指定這個常量你需要指定每個鍵。
所以,你的行動會像
firstAction(dict){
return {
action:'RECEIVE_DICT_1',
dict
}
}
secondAction(dict){
return {
action:'RECEIVE_DICT_2',
dict
}
}
這顯然是太多了代碼膨脹。所以在這裏我們可以使用更高階的reducer,只需扔掉那個常量文件即可。現在
你減速會是這樣的
export default function parentReducer(code){
return function commons(state = state,action){
switch(action.type){
case `RECEIVE_DICT_${code}`:
return Object.assign({},state,{
dict : action.dict
})
}
}
}
我希望你得到的圖片。您可以在我上面分享的鏈接中閱讀更多關於此的內容。
>什麼具體不是一個好的模式?常量?字符串? 不,一般寫作一些樣板文章,contsants和動作創作者。 –
感謝您提供的鏈接 –
也就是說,'type'字段_應該可序列化以確保時間旅行調試正常工作,並且字符串的工作效果最好,因爲它們都是可序列化和可讀的。有關更多信息,請參閱http://redux.js.org/docs/faq/Actions.html#actions-string-constants。 – markerikson