【发布时间】:2022-06-10 17:45:33
【问题描述】:
我正在使用 React 和 TypeScript 编写的待办事项应用程序进行持久性工作。 我正在使用 localStorage 来获得我想要的持久性。
让我给你看一些代码。
const [todos, setTodos] = useState<todoModel[]>([]);
useEffect(() => {
localStorage.setItem("todoItem", JSON.stringify(todos));
}, [todos])
const storesTodos = () => {
const storedValues = localStorage.getItem("todoItem");
if(!storedValues) { return todos; }
return JSON.parse(storedValues);
}
useEffect(() => { getToDoList(); storesTodos();
console.log("default") }, [])
useEffect(() => {
if (!props.reload) return;
console.log(props.reload)
getToDoList();
storesTodos();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [props.reload])
我将StoresTodo() 函数添加到我的useEffects 中,我尝试了它们。
但它不会起作用。我将数据放入我的 localStorage,但在重新加载页面时,它会恢复为默认值。
我在这里错过了什么?
【问题讨论】:
-
什么是
getToDoList?为什么没有任何东西使用来自storesTodos的返回值?我不太清楚这段代码的期望是什么。为状态值创建了一个默认的空数组,该状态值从不更新,您正在将该空数组写入localStorage并从localStorage中读取它,但对读取的值。 -
最初加载组件时,第 1 行(useState 调用)将设置为空数组。您没有在任何地方调用 setTodos 来更新数组,因为我认为该功能不起作用。
标签: javascript reactjs typescript local-storage react-typescript