我想知道如何标记redux动作不是第二次发送。
let triggerOnce = false;
export function populateStore() {
return (dispatch) => {
if (triggerOnce) return;
dispatch({
type: ReviewActions.UPDATE_REVIEW_STATE,
data: review,
});
triggerOnce = true;
};
}
正如你现在所看到的,我正在使用一个外部变量来标记...这不是那么好。想知道是否有更好的方法。非常感谢任何建议
答案 0 :(得分:1)
我不完全确定你的情况,所以如果我弄错了,我会道歉。我会尝试找到一种方法来只调用一次动作,而不是在全局范围内设置一个标志。如果这不合适,您可以在reducer中设置一个标记,一旦填充就设置为true
。
const initialState = {
hasBeenSet: false,
...restOfState,
}
const events = {
[UPDATE_REVIEW_STATE]: (state) => {
const { hasBeenSet } = state;
return hasBeenSet ? state : { ...state, hasBeenSet: true };
},
};
我希望有所帮助!
答案 1 :(得分:0)
我使用了lodash once()
否则你可以使用flag实现一个闭包。