我需要在nextjs
中使用localStorage
,但刷新后我丢失了所有数据(控制台中的空数组[])。
const [todos, setTodos] = useState([]);
useEffect(() => {
const storedTodos = JSON.parse(localStorage.getItem('todos')) || [];
setTodos(storedTodos);
}, []);
useEffect(() => {
localStorage.setItem('todos', JSON.stringify(todos));
}, [todos]);
在React
中:
const [todos, setTodos] = useState(
() => JSON.parse(localStorage.getItem('todos')) || []
);
但是在nextjs
中我看到localstorage is not defined
。
谢谢你!
2条答案
按热度按时间aurhwmvo1#
只尝试
localStorage.setItem('todos', "test");
而不使用useEffect,并检查您的浏览器是否已将其保存在本地存储中。请确保你是在一个类/函数组件中设置的。
localstorage
k10s72fa2#
useEffect
每次刷新都重置localStorage
,所以我添加了todos.length === 0
来检查: