我一直在試圖弄清楚這一點,我越來越困惑。更新路線變化的Redux狀態
我想在每次離開或更改路線時重置/更改Redux狀態。我使用react-router-redux
與history.listener
調度動作,每次路由變化
history.listen(location => store.dispatch(resetManualsCategory()));
行動的創建者:
export function resetManualsCategory() {
return {
type: 'RESET_MANUALS_CATEGORY'
}
}
減速
export function manualCategories(state=[], action) {
switch (action.type) {
case 'SELECT_MANUALS_CATEGORY':
[...]
case 'RESET_MANUALS_CATEGORY':
console.log('test reducer');
return Object.assign({}, state, {
manualCategory: 'test'
})
default:
return state
}
}
什麼混淆了我最,如果我刷新頁面或在頂部導航欄中點擊兩次路徑,則更新狀態,但即使動作和縮減器激活(在控制檯中顯示測試消息),單個路由更改也不會影響縮減狀態。
我在做什麼錯,在這裏發生了什麼?
LOCATION_CHANGE與「@@ router/LOCATION_CHANGE」相同嗎? – spik3s
是的。您也可以使用'@@ router/LOCATION_CHANGE',但不建議。 –
我剛剛意識到造成這個問題的原因,與這個問題略有不同。也許你可以幫忙? http://stackoverflow.com/questions/37912180/react-router-redux-takes-two-clicks-on-a-link-to-update-location-state – spik3s