Javascript 如何只执行一次redux操作?
我想知道如何标记redux操作而不是第二次发送Javascript 如何只执行一次redux操作?,javascript,redux,Javascript,Redux,我想知道如何标记redux操作而不是第二次发送 let triggerOnce = false; export function populateStore() { return (dispatch) => { if (triggerOnce) return; dispatch({ type: ReviewActions.UPDATE_REVIEW_STATE, data: review, }); triggerOnce =
let triggerOnce = false;
export function populateStore() {
return (dispatch) => {
if (triggerOnce) return;
dispatch({
type: ReviewActions.UPDATE_REVIEW_STATE,
data: review,
});
triggerOnce = true;
};
}
正如你现在看到的,我正在使用一个外部变量来标记。。。这不是很好。想知道是否有更好的方法。非常感谢您的建议我不太清楚您的背景,如果我弄错了,我向您道歉。我试图找到一种方法,只调用一次操作,而不是在全局范围内设置一个标志。如果不需要这样做,您可以在reducer中设置一个标志,在填充后将其设置为
true
const initialState = {
hasBeenSet: false,
...restOfState,
}
const events = {
[UPDATE_REVIEW_STATE]: (state) => {
const { hasBeenSet } = state;
return hasBeenSet ? state : { ...state, hasBeenSet: true };
},
};
我希望这有帮助 我使用了lodash
once()
否则您可以使用flag实现一个闭包
什么分派了
populateStore
<代码>触发器可能应该以状态存储,以便可以对其进行反序列化。无论调用什么populateStore
,都可以在分派之前检查此标志。@codingtrigue这是个好主意