【发布时间】:2021-01-19 17:11:29
【问题描述】:
当用户单击应用程序training.js 中的页面时,我正在设置一个本地存储值,然后我希望sidebar.js 读取此值,当设置本地存储项时,它仅输出 @ 中的值987654324@ 一旦用户打开或关闭侧边栏,当 props 发生变化时,它不会被拾取,正如我所期望的 useEffect。
如何让 useEffect 在值发生变化时获取它?
training.js
{typeof window !== 'undefined' && localStorage.setItem(topic.slug, topic.progress)}
sidebar.js
const Sidebar = () => {
const structureAndDetails = typeof window !== 'undefined' ? Number(localStorage.getItem('structure-and-details')) : null
const hydraulics = typeof window !== 'undefined' ? Number(localStorage.getItem('hydraulics')) : null
useEffect(() => {
console.log('hydraulics',hydraulics)
}, [hydraulics])
【问题讨论】:
-
this codesandbox 对你有帮助吗?
-
localStorage 不是反应式的,不能单独观看(除非您使用某些库)。您还可以使用状态管理生态系统(React Context API、redux、mobx 等)来做到这一点
标签: javascript reactjs