【发布时间】:2020-11-24 11:24:45
【问题描述】:
我有一个功能组件,如果我在调用 API 时遇到错误,我想打开一个显示该错误的模态。决定此模式是否打开的属性使用上下文 API 存储。 所以我在组件中有这段代码:
const modalContext = useContext(ModalContext);
useEffect(() => {
if (error !== "") {
modalContext.showModal();
}
}, [error]);
但我有这个警告:
React Hook useEffect 缺少一个依赖项:'modalContext'。要么包含它,要么移除依赖数组 react-hooks/exhaustive-deps
我读到要解决这个问题,我可以使用 refs,所以我更改了代码,现在我有了:
const modalContextRef = React.useRef(false);
modalContextRef.current = useContext(ModalContext);
useEffect(() => {
if (error !== "") {
modalContextRef.current.showModal();
}
}, [error]);
我想知道这是否是正确的做法,或者这是一种不好的做法。
谢谢!
【问题讨论】:
-
这取决于
showModal是什么以及是否可以有stale closure -
showModal 是一个改变“isModalOpen”布尔值的函数。这是我保存在上下文 API 中的变量。我想使用上下文 API 来看看它如何与这个有模式的例子一起工作,而不是在几个组件中传递变量“isModalOpen”
标签: reactjs react-hooks react-functional-component