我有一些Reaction组件,它们使用本地存储来存储一些信息. 这些变量通过自定义挂钩绑定到状态变量:
export const useLocalStorage = (key, defaultValue) => {
const [value, setValue] = useState(() => {
return getStorageValue(key, defaultValue);
});
useEffect(() => {
localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);
return [value, setValue];
}
该组件的用法如下:
const [thing, setThing] = useLocalStorage('thing', '');
现在,我想要的是,在组件卸载时将其清除.
我曾try 使用useEffect清除此问题:
useEffect(() => {
return () => {
setThing(prevThing => '');
}
},[]);
然而,这似乎并不奏效.我甚至可以在清理过程中通过控制台登录 函数并看到这一点,但状态更改和随后清除 本地存储不会发生.我不确定如何才能让这件事得到妥善的澄清.
帖子主题:Re:Колибри
const getStorageValue = (key, defaultValue) => {
let value;
try {
const saved = localStorage.getItem(key);
value = JSON.parse(saved);
} catch(err) {
value = false;
}
return value || defaultValue;
}