我已经能够创建一个持久的本地存储,允许用户登录并存储随机生成的 API 令牌,这是与 API 通信所必需的。
我遇到的问题是我的注销按钮不再起作用,因为会话存储将登录信息和令牌保存在本地存储中,除非我手动执行,否则不会删除。
下面是我的代码。
import { createStore, applyMiddleware, compose } from "redux";
import rootReducer from "../reducers";
import thunk from "redux-thunk";
function saveToLocalStorage(state) {
try {
const serializedState = JSON.stringify(state);
localStorage.setItem("state", serializedState);
} catch (e) {
console.log(e);
}
}
function loadFromLocalStorage() {
try {
const serializedState = localStorage.getItem("state");
if (serializedState === null) return undefined;
return JSON.parse(serializedState);
} catch (e) {
console.log(e);
return undefined;
}
}
const storeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
|| compose;
const persistedState = loadFromLocalStorage();
const store = createStore(
rootReducer,
persistedState,
storeEnhancers(applyMiddleware(thunk))
);
store.subscribe(() => saveToLocalStorage(store.getState()));
export default store;