setCounter执行后counter的值

来源:4-1 什么是Hooks

Tirsky1683388

2020-08-24

import { useState, useEffect } from "react"

const MyCounter = () => {
  const [counter, setCounter] = useState(0)

  useEffect(() => {
    const interval = setInterval(() => {
      setCounter(c => c + 1)
      console.log(counter)
    }, 1000)
    
    return () => clearInterval(interval)
  }, [])
  
  console.log(counter)
  return <span>{counter}</span>
}
export default MyCounter

客户端控制台打印的结果如下
0
1
0
2
0
3
0

想问下为什么在useEffect中打印出的counter值和在组件中打印出的counter值不一样? 谢谢老师

写回答

1回答

Tirsky1683388

提问者

2020-08-24

在下一节课中找到答案了  因为setInterval中的counter是其执行的一瞬间counter的值,之后也一直是0 所以打印出来0,而setInterval外部的counter真实的随时间改变的值

0
1
Jokcy
好的!赞
2020-08-29
共1条回复

全栈进阶课程 React16.8+Next.js+Koa2一步到位开发Github

学习React/Next.js服务端渲染SSR同构设计方案,理解OAuth登录体系的实现原理

651 学习 · 311 问题

查看课程