我遇到了同样的问题,最后我使用了一个将状态保存在本地存储中的钩子。我不知道你是否使用钩子,但假设你是这应该可以解决你的问题:
import { useEffect, useState } from 'react';
export const usePersistState = (key: string | any, defaultValue: string | boolean | any) => {
const [value, setValue] = useState(() => {
if (typeof window !== 'undefined') {
const persistedState = window.localStorage.getItem(key);
return persistedState !== null ? JSON.parse(persistedState) : defaultValue;
}
});
useEffect(() => {
window.localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);
return [value, setValue];
};
这会根据 localStorage 项设置您的状态,因此它应该有一个布尔值。然后将其导入到您的组件中,并像 useState 一样使用它。
import { usePersistState } from 'hooks/use-persist-state';
const [state, setState] = usePersistState('localStorageKey', localStorageValue);
我用它来保存我从 API 调用的数据,并显示/隐藏 cookie 同意横幅,所以它有很多用途。快乐的编码,希望这能解决你的问题!