Javascript 如何只执行一次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 =

我想知道如何标记redux操作而不是第二次发送

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这是个好主意