Функция побочного эффекта не вызывается в 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.

У меня два вопроса:

  1. Контроль не входит в navigateTo()при нажатии кнопки. Что я делаю неправильно?

  2. Я считаю, что reducer - неподходящее место для него, поскольку мы здесь не манипулируем состоянием. В какое место лучше всего поместить этот фрагмент кода при отправке действия нажатия кнопки?

1 ответ

Решение

Код , который у вас есть, выглядит правильно. Вы использовали усилитель магазина при создании своего магазина redux? Вы пытались установить точку останова в редукторе и проверить, как он вызывается? https://redux-loop.js.org/docs/tutorial/Tutorial.html

Другие вопросы по тегам