React useState 取不到最新值?

点击按钮后,useEffect可以监听到值最新的改变。而loadData却一直拿到的是上一次的值。
为什么呢?是人性的丧尸还是道德的泯灭?望大佬解惑!
下文小案例,复制就能跑:

import { useState, useEffect } from 'react'

export default function () {
  const [page, setPage] = useState({ current: 1, pageSize: 10 });
  function loadData() {
    console.log({ current: page.current })
  }

  useEffect(() => {
    console.log('发生了改变', page)
  }, [page])

  function onClick() {
    setPage((pre) => ({ ...pre, current: pre.current + 1 }))
    setTimeout(() => {
      console.log('加载数据时', page)
      loadData()
    }, 1000)
  }
  return <>
    <div>
      {JSON.stringify(page)}
      <p>测试页面</p>
      <button onClick={onClick}>添加</button>
    </div>
  </>
}
阅读 2k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题