Ответ 1
Вот несколько способов решения этой проблемы:
- Вместо использования
Link
попробуйте использоватьbrowserHistory.push(path)
с помощью функцииonClick
.- Внутри
onClick
вы можетеdispatch
выполнить свое действие, а затемpush
в новое место. - Однако, если вы хотите выполнить эту серию действий в различных компонентах, вы, вероятно, будете испытывать дублирование кода.
- Внутри
- Более надежным способом решения этой проблемы будет реализация
redux-thunk
, которая обеспечивает общий способ выполнения нескольких "действий" (будь то вызов действия Redux или выполнение операции async или обоих) в ответ к изменению.- У Dan есть отличный ответ, в котором подчеркивается простота того, что
redux-thunk
действительно предлагает: Можно ли отправлять несколько действий без промежуточного ПО Redux Thunk? - В вашем случае в функции
incrementTwice
представьте, что просто замените один из вызововdispatch(increment)
на вызовbrowserHistory.push(action.path)
, как показано ниже:
- У Dan есть отличный ответ, в котором подчеркивается простота того, что
Действие Redux thunk
export const dispatchThenRoute = (myAction, myPath) => {
return (dispatch) => {
dispatch(myAction)
browserHistory.push(myPath);
}
};