请稍等 ...
×

采纳答案成功!

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

关于 useEffect 内部不能修改 state 的问题

有两种方式仅供参考

// 第一种方式

import { useEffect, useState } from 'react'

const HelloWorld = () => {
  const [count, setCount] = useState(0)

  useEffect(() => {
    const timer = setInterval(() => {
      setCount(pre => pre + 1)
    }, 1000)

    return () => clearInterval(timer)
  }, [])

  return <p>{count}</p>
}

export default HelloWorld
// 第二种方式不推荐
// 首先 eslint 会提示把 count 当做依赖项
// 其次会频繁调用创建定时器和销毁定时器,但是也可用

import { useEffect, useState } from 'react'

const HelloWorld = () => {
  const [count, setCount] = useState(0)

  useEffect(() => {
    const timer = setInterval(() => {
      setCount(count + 1)
    }, 1000)

    return () => clearInterval(timer)
  }, [count])

  return <p>{count}</p>
}

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

1回答

双越 2022-04-12 08:34:03

非常好~

0 回复 有任何疑惑可以回复我~
  • setCount可以传一个函数嘛?
    回复 有任何疑惑可以回复我~ 2022-05-22 21:09:34
  • 海浪浪 回复 薛清扬 #2
    可以的,入参的函数的第一个入参就是 state 的当前值
    https://zh-hans.reactjs.org/docs/hooks-reference.html#usestate
    回复 有任何疑惑可以回复我~ 2022-07-17 23:45:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信