栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

React hook useEffect永远连续/无限循环运行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

React hook useEffect永远连续/无限循环运行

发生这种情况是因为

useEffect
在每次渲染后都会触发,这是
Counter()
在这种情况下无状态功能组件的调用。当你做一个
setX
从返回的呼叫
useState
useEffect
,阵营将再次呈现该组件,并
useEffect
再次运行。这将导致无限循环:

Counter()
→交通
useEffect()
→交通
setCount()
→交通
Counter()
→交通
useEffect()
→交通…(循环)

要使您的

useEffect
运行一次,请传递一个空数组
[]
作为第二个参数,如下面的修订代码段所示。

第二个参数的目的是告诉React数组参数中的任何值何时更改:

useEffect(() => {  setCount(100);}, [count]); // only re-run the effect if count changes

您可以将任意数量的值传递到数组中,并且

useEffect
仅在其中任何一个值更改时才运行。通过传入一个空数组,我们告诉React不要跟踪任何更改,只能运行一次,有效地模拟
componentDidMount

function Counter() {  const [count, setCount] = React.useState(0);  React.useEffect(() => {    console.log('Run useEffect');    setCount(100);  }, []);  return (    <div>      <p>Count: {count}</p>    </div>  );}ReactDOM.render(<Counter />, document.querySelector('#app'));<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.development.js"></script><script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.development.js"></script><div id="app"></div>

阅读有关useEffect的更多信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号