React 使用状态的二传手会过时吗?



我正在使用全局事件处理程序。为了避免每次状态更改时分离/重新附加事件处理程序,我使用的是强制更新的 ref:

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的二传手的陈旧版本,但这似乎不会导致错误。

使用这样的过时版本的useState是否安全?如果没有,这会导致什么问题?

像这样使用过时的useState版本是否安全?

是的,这就是你用钩子实现this.forceUpdate的方式。

通常,您会看到类似以下内容:

// forceRender();
const [, forceRender] = useReducer((p) => !p, false);

它甚至用于react-redux源代码。

相关内容

  • 没有找到相关文章

最新更新