Javascript 是否使用状态';谁的二传手会发霉?
我正在使用全局事件处理程序。为了避免在每次状态更改时分离/重新附加事件处理程序,我使用带有强制更新的ref:Javascript 是否使用状态';谁的二传手会发霉?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在使用全局事件处理程序。为了避免在每次状态更改时分离/重新附加事件处理程序,我使用带有强制更新的ref: const ref = useRef(); const forceUpdate = useState()[1]; const handlePopState = (event) => { ref.current = { ...ref.current, foo: event.foo, }; forceUpdate();
const ref = useRef();
const forceUpdate = useState()[1];
const handlePopState = (event) => {
ref.current = {
...ref.current,
foo: event.foo,
};
forceUpdate();
};
useEffect(() => {
window.addEventListener('popstate', handlePopState);
return () => {
window.removeEventListener('popstate', handlePopState);
};
}, []);
我很惊讶这真的有效。从技术上讲,forceUpdate
使用的是useState
的setter的旧版本,但这似乎不会导致错误
像这样使用过时版本的useState
安全吗?如果不是,这会导致什么问题
像这样使用过时版本的useState
安全吗
是的,这就是如何使用钩子实现this.forceUpdate的方法
通常,您会看到如下内容:
// forceRender();
const [, forceRender] = useReducer((p) => !p, false);
它甚至还被用在汽车上