请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

useEffect可能出现死循环

之前问了这个问题但是慕课不允许在回复中粘贴图片,就重新发下, 问题就是视频14-16中你讲Hook使用中的几个注意事项出现的

图片描述
老师我没有明白问什么你用myCount 之后它就能够更新了, 能说下具体的原理吗, 没听清您视频说的
希望尽可能详细的解释一下

正在回答 回答被采纳积分+3

2回答

双越 2022-04-12 09:48:29

当你使用 count 时,下面代码的 'render...' 和 'useEffect...' 会死循环的一直打印,说明组件在不停的自动渲染。

原因就是:当 count 改变时,会触发组件重新渲染,因为 count 是 state 。而 myCount 不是 state ,它改变不改变,跟组件渲染没关系。

(注意看代码中的一行注释)

import React, { useState, useEffect } from 'react'

export default function MyComponent () {
    const [count, setCount] = useState(0)
    
    console.log('render...')
    
    useEffect(() => {
        console.log('useEffect...', count)
        const timer = setInterval(() => {
            setCount(count + 1)
        })
        
        return () => clearInterval(timer)
    }, [count]) // eslint 提示,这里必须有 [count] ,因为 useEffect 函数内部有 count
    
    return <p>
        {count}
    </p>
}


https://img1.sycdn.imooc.com//szimg/6254d97809fc6d9910261168.jpg


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号