本地存储开始为空

问题描述 投票:0回答:1

我正在使用 React 做一个待办事项列表,我的 localStorage 将项目保存在 localStorage 的数组中,但是当我刷新页面时,它是空的。

localStorage saving the items

const SAVED_ITEMS = "savedItems";

function Todo() {
  const [items, setItems] = useState([]);

  useEffect(() => {
    let savedItems = JSON.parse(localStorage.getItem(SAVED_ITEMS));
    if (savedItems) {
      setItems(savedItems);
    }
  }, []);

  useEffect(() => {
    localStorage.setItem(SAVED_ITEMS, JSON.stringify(items));
  }, [items]);
}
reactjs local-storage
1个回答
0
投票

在初始渲染时,所有

useEffect
都会调用它们初始化时使用的设置函数。对设置函数的进一步调用取决于依赖项数组中反应值的变化。 [反应文档]

这意味着以下代码在初始渲染时运行:

useEffect(() => {
    localStorage.setItem(SAVED_ITEMS, JSON.stringify(items));
  }, [items]);

这意味着在初始渲染时,

items
[]
,并且以这种方式保存到存储中。


为了防止对您的设置函数进行初始调用,请考虑这个 stackoverflow 问题 以及提供的答案。

© www.soinside.com 2019 - 2024. All rights reserved.