首页 > 其他分享 >useEffect 与 useEvent 以及 useMount

useEffect 与 useEvent 以及 useMount

时间:2023-12-20 19:25:02浏览次数:28  
标签:useEvent 数组 依赖 setMounted mounted useEffect useMount

1.useEffect 空数组依赖初始化问题

2.useEvent 钩子

https://zhuanlan.zhihu.com/p/592982479

 

空数组依赖的弊端

1.严格模式下,不是只执行一次,而是两次

2.执行两次的情况,比如在获取auth认证,令牌或者token时,短时间内服务端不支持给两个不同的请求都发放认证,而是两个都报错

3. 空数组依赖的useEffect内,定时器或者处理监听回调的事件代码会获取不到最新的值

 

1.学习提取响应式代码与非响应式代码

2.尽量避免对象与函数成为依赖项

3.空数组依赖项带来的问题与优化方法(文章提到的方法之外,应该还有新的思路,待学习)

 

补充 https://zhuanlan.zhihu.com/p/610805675 使用useRef 解决调用两次的问题

 

二次补充, ahooks中的useMount 钩子

在useEffect 空数组依赖 外面封装一层

const useMounted = () => {
    const [mounted, setMounted] = useState(false);
    useEffect(() => {
        !mounted && setMounted(true);
        return () => setMounted(false);
    }, []);
    return mounted;
}

标签:useEvent,数组,依赖,setMounted,mounted,useEffect,useMount
From: https://www.cnblogs.com/space-cbh/p/17917287.html

相关文章

  • React useEffect 在组件挂载时运行了两次
    在使用useEffect这个hook时,发现useEffect会执行2次useEffect(()=>{console.log("执行useEffect");},[]);控制台输出:执行useEffect执行useEffect查看疑难解答官方文档,官方解释如下:在开发环境下,如果开启严格模式,React会在实际运行setup之前额外运行一次......
  • react_hooks系列 useEffect
    一、作用​可以使得你在函数组件中执行一些带有副作用的方法。​每当React组件更新之后,就会触发useEffect,在第一次的render和每次update后的useEffect触发,不用再去考虑“初次挂载”还是“更新”。React保证了每次运行effect的同时,DOM都已经更新完毕。......
  • #yyds干货盘点#react之useEffect
    React的HooksAPI为我们提供了一种新的处理副作用的方式——useEffect。useEffect函数接受两个参数:一个是_副作用函数_和一个_依赖数组_。副作用函数是在组件render之后运行,而依赖数组告诉React何时应该执行或跳过该副作用。如果没有提供依赖数组,`useEffect`将在每次渲染后运行。......
  • useEffect依赖项使用
    用于在react组件中创建不是由事件引起的而是由渲染本身引起的,比如发送Ajax请求、更改dom等等 import{useEffect,useState}from'react';functionApp(){const[count,setcount]=useState(0)const[msg,setmsg]=useState('你好')//1.没有依赖项,在组件渲染......
  • useState() and useEffect() in react
    foruseState(),see:https://www.freecodecamp.org/news/usestate-vs-redux-state-management/  foruseEffect(),see: https://www.freecodecamp.org/news/react-useeffect-absolute-beginners/简单说就是:当前component之行完毕后会之行useEffect定义的第一个参数的函......
  • React 18 useEffect 代码执行两次的问题
    https://github.com/zjy4fun/notes/issues/62 React18提出的新特性“并发渲染”,为了防止组件重复挂载的问题,React在开发模式&&严格模式下,useEffect会执行两次(模拟组件挂载和组件卸载,让问题提早暴露),但是线上模式不会。开发模式下,可以通过设置标志位防止useEffect执行多......
  • useEffect使用指南
    https://zhuanlan.zhihu.com/p/65773322最基本的使用importReact,{useState}from'react';functionApp(){const[data,setData]=useState({hits:[]});return(<ul>{data.hits.map(item=>(<likey={item.objectI......
  • react中useEffect使用async await报错
    错误代码一:useEffect(async()=>{ awaitmyFunc();},[])constmyFunc=async()=>{...};错误代码二:useEffect(()=>myFunc(),[])constmyFunc=async()=>{...};以上写法在打开页面时正常显示,但是当从该页面返回上一页时报错,如下:原因要知道,useEffect钩子函数的一个......
  • react useEffect a页面跳转b页面,b页面跳转a页面,接口调用多次
    reactuseEffecta页面跳转b页面,b页面跳转a页面,接口调用多次useEffect(()=>{xxx();return()=>{history?.go(0);};},[]);我的解决方式是在,在离开页面之前触发return()=> {history?.go(0);};当前页面刷新,清空了当前缓存的数据,也相当于第一次......
  • 如何编写难以维护的React代码?——滥用useEffect
    如何编写难以维护的React代码?——滥用useEffect在许多项目中,我们经常会遇到一些难以维护的React代码。其中一种常见的情况是滥用useEffect钩子,特别是在处理衍生状态时。让我们来看一个例子:constComponentA=({list})=>{const[filteredList,setFilteredList]=useSta......