0

我正在开发一个 react redux 应用程序,在该应用程序中,单击按钮我需要更改我的窗口位置。到目前为止,我正在调度按钮单击操作并尝试使用 redux-loop 在减速器中实现导航。

组件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.stackoverflow.com";
}

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

我有两个问题:

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

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

4

1 回答 1

1

您拥有的代码看起来正确。您在创建 redux 商店时是否使用了商店增强器?您是否尝试在减速器中设置断点并验证它是否按预期调用?https://redux-loop.js.org/docs/tutorial/Tutorial.html

于 2020-05-19T19:14:12.817 回答