【发布时间】:2020-07-14 22:11:44
【问题描述】:
我有 React 组件。最初我在 UseEffect 中设置了一些 localStorage。此外,我添加了事件侦听器。单击文本后,它会更改 localStorage 值,但事件侦听器没有触发,为什么?
import React, { useEffect } from "react";
export default function App() {
useEffect(() => {
window.localStorage.setItem("item 1", 'val 1');
window.addEventListener('storage', () => {
alert('localstorage changed!')
})
}, []);
const getData = () => {
localStorage.setItem("item", "val chamged");
};
return (
<div className="App">
<h1 onClick={getData}>Change localstorage value</h1>
</div>
);
}
【问题讨论】:
-
请更新您的代码框,使其与您在此处粘贴的代码相同。您的链接沙箱中没有事件侦听器。
-
如果您更改沙箱代码以匹配您在此处拥有的代码,特别是
onClick={getData}部分,您将看到它有效。在调用getData()函数并传递结果而不是传递函数本身时存在拼写错误。 -
已更新,但仍无法正常工作
-
useEffect() 无法检测到更改。我尝试了一些随机哈希来触发 useEffect codesandbox.io/s/serene-hawking-hz6pq 但仍然不知道为什么监听器什么都不做
标签: javascript reactjs local-storage