Redux商店只订阅特定活动? store.subscribe()

问题描述 投票:3回答:1

我想将一些用户数据持久保存到localStorage,并且需要让商店进行subcibe以进行状态更改,但我不希望每次状态更改时都触发,而是仅在特定事件发生时才发生,例如在user_update事件中。

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

store.subscribe(()=>{

//save to local storage here

})

好,谢谢你的帮助:)

reactjs redux local-storage store persist
1个回答
2
投票

当您订阅商店时,每当商店中的某些内容发生变化时,您的内部功能就会触发。这就是它的设计方式。因此,您无法响应事件,但您可以响应商店特定部分的更改。

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;
}

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

检查这个更多:Redux store API Discussion

© www.soinside.com 2019 - 2024. All rights reserved.