useEffect
常用示例
在 useEffect 内部使用异步 Function
useEffect 内部使用异步 Function不用改写
fetchData为useCallback;当副作用无法在
return中消除的时候,如下异步请求(回调)中调用声明周期的方法setState,则需要判断isMounted的值后再进行执行;是否销毁的状态
isMounted,写在useEffect内部,减少useState依赖; (注意方案可能有问题,待求证)
useEffect(() => {
let isMounted = true;
const fetchData = async () => {
const article = await API.fetchArticle(id);
if (!isMounted) {
// check isMounted for async action which may have side effect
setArticle(article);
}
};
fetchData().then();
return () => {
isMounted = false;
};
}, [id]);在 useEffect 中使用 setInterval/setTimeout, clearInterval/clearTimeout,无需将 id 转换为 useState
useEffect 中使用 setInterval/setTimeout, clearInterval/clearTimeout,无需将 id 转换为 useState使用 useReducer 解救 useEffect 无法去除的依赖
useReducer 解救 useEffect 无法去除的依赖以 setCount 为例:
将 setCount 转换成 reducer 事件 action :
如何去除 ESLint 提示的组件内常量依赖
示例:
方法:将对应常量移出组件内,放置在组件外部或单独的配置文件中。
最后更新于
这有帮助吗?