Функция побочного эффекта не вызывается в Cmd.run с использованием redux-loop
Я работаю над приложением React Redux, где при нажатии кнопки мне нужно изменить расположение окна. На данный момент я отправляю действие нажатия кнопки и пытаюсь выполнить навигацию в редукторе с помощью цикла redux.
Компонент js
class Component {
constructor() {
super()
}
render() {
return (
<button onClick={() => this.props.onButtonClick()}>Navigate</button>
)
}
}
const mapDispatchToProps = (dispatch) => {
return {
"onButtonClick": () => dispatch(handleClick())
};
}
Действие js
export const handleClick = () => ({
type: NAVIGATE
});
Редуктор js
export default (state = {}, action) => {
if (action.type === NAVIGATE) {
return loop(state, Cmd.run(navigateTo));
}
};
Эффект js
export const navigateTo = () => {
window.location = "https://www.stackru.com";
}
Помимо этого действия, у меня есть много действий, которые включают побочные эффекты, а также манипулирование состоянием, отсюда и redux-loop.
У меня два вопроса:
Контроль не входит в
navigateTo()
при нажатии кнопки. Что я делаю неправильно?Я считаю, что reducer - неподходящее место для него, поскольку мы здесь не манипулируем состоянием. В какое место лучше всего поместить этот фрагмент кода при отправке действия нажатия кнопки?
1 ответ
Код , который у вас есть, выглядит правильно. Вы использовали усилитель магазина при создании своего магазина redux? Вы пытались установить точку останова в редукторе и проверить, как он вызывается? https://redux-loop.js.org/docs/tutorial/Tutorial.html