![](/img/trans.png)
[英]localStorage.getItem not working to change the styling of the navbar
[英]ReactJS localstorage.getItem is not working
我的 localstorage.getItem 有問題,setItem function 工作正常並且數據存儲正確,但是當我刷新頁面時數據消失了。 這是我的代碼
useEffect(()=>{
localStorage.setItem(local_Storage_key, JSON.stringify(contacts));
}, [contacts]);
useEffect(()=>{
const storage = JSON.parse(localStorage.getItem(local_Storage_key));
if (storage) {setContacts(storage);}
}, []);
我認為這是因為您的以下代碼是在安裝組件后執行的。
useEffect(()=>{
localStorage.setItem(local_Storage_key, JSON.stringify(contacts));
}, [contacts]);
正因為如此,它再次將聯系人的初始值設置為 localStorage。 為避免這種情況,您可以將聯系人的初始值設置為您從 localStorage 獲得的值
const [contacts,setContacts] = useState(JSON.parse(localStorage.getItem(local_Storage_key)));
useEffect(()=>{
localStorage.setItem(local_Storage_key, JSON.stringify(contacts));
}, [contacts]);
// remove another useEffect
我建議你使用useLocalStorage
import { useLocalStorage } from 'react-use';
const Demo = () => {
const [value, setValue, remove] = useLocalStorage('my-key', 'foo');
return (
<div>
<div>Value: {value}</div>
<button onClick={() => setValue('bar')}>bar</button>
<button onClick={() => setValue('baz')}>baz</button>
<button onClick={() => remove()}>Remove</button>
</div>
);
};
幾天來我一直在想同樣的問題。 終於找到了解決問題的辦法:如果把index.js文件中的StrictMode元素去掉,問題就解決了,刷新頁面時localStorage的數據會持續存在。 最好的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.