我想将一些用户数据持久保存到localStorage,并且需要让商店进行subcibe以进行状态更改,但我不希望每次状态更改时都触发,而是仅在特定事件发生时才发生,例如在user_update事件中。
我可以通过任何方式让商店订阅特定事件而不是通用:
store.subscribe(()=>{
//save to local storage here
})
好,谢谢你的帮助:)
当您订阅商店时,每当商店中的某些内容发生变化时,您的内部功能就会触发。这就是它的设计方式。因此,您无法响应事件,但您可以响应商店特定部分的更改。
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