Redux Store 仅订阅特定事件?商店订阅()

Fab*_*ice 4 store persist local-storage reactjs redux

我想将一些用户数据保存到 localStorage 并且需要商店订阅状态更改,但我不想在每次状态更改时触发,而是仅在特定事件发生时触发,例如在我的情况下是 user_update 事件。

我可以通过任何方式让商店订阅特定事件而不是通用事件:

store.subscribe(()=>{

//save to local storage here

})
Run Code Online (Sandbox Code Playgroud)

好吧,非常感谢您的帮助:)

And*_*eos 5

当您订阅 store 时,每次 store 中的某些内容发生变化时,您的内部函数都会触发。这就是它的设计方式。所以,你不能响应事件,但你可以响应商店特定部分的变化。

function observeStore(store, select, onChange) {
  let currentState;

  function handleChange() {
    let nextState = select(store.getState());
    if (nextState !== currentState) {
      currentState = nextState;
      onChange(currentState);
    }
  }

  let unsubscribe = store.subscribe(handleChange);
  handleChange();
  return unsubscribe;
}
Run Code Online (Sandbox Code Playgroud)

然后做observeStore(store, select, this.writeToLocalStorageOrWhatever)。顺便说一下,为了在本地存储中持久存储数据,请尝试使用redux-persist

查看更多信息:Redux store API Discussion