微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查本地存储在ReactJS中是否有对象

如何解决检查本地存储在ReactJS中是否有对象

我已经建立了带有路线的网站,并且我正在使用localstorage在路线之间传输数据。

所以我创建了onClick处理程序,使用JSON.stringify将数据存储在本地存储中,如下所示:

const [build,setBuild] = useState({section: ['build']});
const [promote,setPromote] = useState({section: ['promote']});
const [ad,setAd] = useState({section: []});


 //..later on function that save localstorage and route to another page

localStorage.setItem('buildobject',JSON.stringify(build));
localStorage.setItem('adobject',JSON.stringify(ad));
localStorage.setItem('promoteObject',JSON.stringify(promote));

接下来,我要像这样从存储中引诱数据:

useEffect(() => {
   //Check if buildobject isn't empty
   if (JSON.parse(localStorage.getItem('buildobject')) !== null) {
       //Do something
   }
   if (JSON.parse(localStorage.getItem('promoteObject')) !== null) {
       //Do something
   }
   if (JSON.parse(localStorage.getItem('adobject')) !== null) {
       //Do something
   }
},[]);

问题是,即使ad状态为空,它也会显示自己为非空,并且if语句将被覆盖。

如何检查localstorage内部是否有对象以及该对象是否为空?

解决方法

您已将localStorage.setItem('adObject',JSON.stringify(ad))设置为对象具有空数据;您将获得JSON.parse(localStorage.getItem('adObject'))之前设置的相同内容。只是检查,

const adStorage = JSON.parse(localStorage.getItem('adObject'));
if (adStorage !== null && adStorage.section.length) {
    //Do something
}
,

您可以使用for in循环进行操作:

const adData = JSON.parse(localStorage.getItem('adObject'));

for (const property in adData) {
    if (ad.property.length) {
        // do something
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。