使用 redux-loop 在 Cmd.run 中未调用副作用函数

Side effect function is not getting called in Cmd.run using redux-loop

我正在开发一个 React redux 应用程序,在其中,单击按钮我需要更改我的 window 位置。 截至目前,我正在调度按钮单击操作并尝试使用 redux-loop 在 reducer 中实现导航。

组件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
});

Reducer js

export default (state = {}, action) => {
    if (action.type === NAVIGATE) {
        return loop(state, Cmd.run(navigateTo));
    }
};

效果js

export const navigateTo = () => {
 window.location = "https://www.whosebug.com";
}

除了这个动作,我还有很多涉及副作用和状态操作的动作,因此是 redux-loop。

我有两个问题:

  1. 单击按钮时控件不会进入 navigateTo()。我做错了什么?

  2. 我觉得 reducer 不是一个合适的地方,因为我们在这里没有操纵状态。 调度按钮单击操作时,放置这段代码的最佳位置是什么?

您的代码看起来是正确的。你在创建 redux store 时使用了 store enhancer 吗?您是否尝试在 reducer 中设置断点并验证它是否按预期被调用? https://redux-loop.js.org/docs/tutorial/Tutorial.html