我一直在试图弄清楚这一点,我越来越困惑。更新路线变化的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