使用 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。
我有两个问题:
单击按钮时控件不会进入 navigateTo()
。我做错了什么?
我觉得 reducer 不是一个合适的地方,因为我们在这里没有操纵状态。
调度按钮单击操作时,放置这段代码的最佳位置是什么?
您的代码看起来是正确的。你在创建 redux store 时使用了 store enhancer 吗?您是否尝试在 reducer 中设置断点并验证它是否按预期被调用? https://redux-loop.js.org/docs/tutorial/Tutorial.html
我正在开发一个 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。
我有两个问题:
单击按钮时控件不会进入
navigateTo()
。我做错了什么?我觉得 reducer 不是一个合适的地方,因为我们在这里没有操纵状态。 调度按钮单击操作时,放置这段代码的最佳位置是什么?
您的代码看起来是正确的。你在创建 redux store 时使用了 store enhancer 吗?您是否尝试在 reducer 中设置断点并验证它是否按预期被调用? https://redux-loop.js.org/docs/tutorial/Tutorial.html