【发布时间】:2021-03-11 14:25:41
【问题描述】:
我正在尝试动态显示存储在 localstorage 中的数据,这意味着当数据添加到 localstorage 时,它也应该同时显示在同一页面上。我有以下代码:
const [peopleInfo, getPeopleInfo] = useState(
JSON.parse(localStorage.getItem("peopleInfo"))
);
const [objects, getObjectsList] = useState(
JSON.parse(localStorage.getItem("objects"))
);
const setPeopleInfo = async () => {
const people = await JSON.parse(localStorage.getItem("peopleInfo"));
getPeopleInfo(people);
};
const getObjects = async () => {
const object = await JSON.parse(localStorage.getItem("objects"));
getObjectsList(object);
};
useEffect(() => {
let isSubscribed = true;
if (isSubscribed) {
setPeopleInfo();
getObjects();
}
return () => (isSubscribed = false);
});
当 useEffect 不包含 getObject() 时:
useEffect(() => {
let isSubscribed = true;
if (isSubscribed) {
setPeopleInfo();
}
return () => (isSubscribed = false);
});
代码工作正常,每次 localStorage 更改时 peopleInfo 都会更新,但是当我包含 getObjects() 和其他类似函数以获取所有必要数据时,应用程序崩溃而不显示错误。我不知道为什么。当我将 useEffect 与空 [] 一起使用时,除非我刷新页面,否则数据不会在 localStorage 更改时更新(这不是我想要的)。有人可以建议怎么做吗?
【问题讨论】:
标签: javascript reactjs async-await local-storage