getitem 在 localStorage 中返回 null
2021-08-19
213
我尝试在 localStorage 中设置和获取项目。 并且我有功能状态,因此我尝试获取和设置项目作为状态的键, setitem 正在工作,但是当我刷新我的网站时 localstorage 返回 null。
我的代码如下:
const [chart, setChart] = useState([
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
]);
const charts = index => chart[index].key;
const chartStorageKey = [
charts(0),
charts(1),
charts(2),
charts(3),
charts(4),
charts(5),
charts(6),
charts(7),
];
useEffect(() => {
const persistChart = localStorage.getItem("chart");
JSON.parse(persistChart);
});
useEffect(() => {
localStorage.setItem("chart", JSON.stringify(chartStorageKey), [
chartStorageKey,
]);
});
3个回答
由于组件为空,因此您需要在此数组中添加对象,其键为 key,值为空组件。
const [chart, setChart] = useState([
{key: empty},
{key: empty},
{key: empty},
{key: empty},
{key: empty},
{key: empty},
{key: empty},
{key: empty},
]);
因为在这里您将抛出数组并获取键,在本例中为 null。
const charts = index => chart[index].key;
这是 游乐场
的链接pavlovic265
2021-08-19
useEffect 顺序错误。
第二个 useEffect 应该在第一个。
Snehendu Roy
2021-08-19
UseEffect 将在每次渲染时被调用,因此添加第二个参数,以便仅在安装组件时才调用它
const [chart, setChart] = useState([
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
]);
const charts = index => chart[index].key;
const chartStorageKey = [
charts(0),
charts(1),
charts(2),
charts(3),
charts(4),
charts(5),
charts(6),
charts(7),
];
useEffect(() => {
localStorage.setItem("chart", JSON.stringify(chartStorageKey));
},[]);
useEffect(() => {
const persistChart = localStorage.getItem("chart");
console.log(persistChart)
}, []);
如果您想在每次
chart
状态改变时更改本地存储,那么只需将 chart 传递给 useEffect 的依赖项数组即可
useEffect(() => {
localStorage.setItem("chart", JSON.stringify(chartStorageKey));
},[chart]);
useEffect(() => {
const persistChart = localStorage.getItem("chart");
console.log(persistChart)
}, [chart]);
sairaj
2021-08-19