useState异步的问题

55 阅读1分钟
const [page, setPage] = useState(999)

  const handleRefresh = () => {
    setPage(() => 1)
    loadMoreData()
  }

  const loadMoreData = () => {
    console.log(page) // 输出还是旧数据999,如何解决
  }

  useEffect(() => {
    handleRefresh()
  }, [])

解决方法1 useRef

const page = useRef(0)

  const handleRefresh = () => {
    page.current = 1
    loadMoreData()
  }

  const loadMoreData = () => {
    console.log(page.current) // 输出还是旧数据999,如何解决
  }

  useEffect(() => {
    handleRefresh()
  }, [])

解决方法2 useEffect

const [page, setPage] = useState(999)

  const handleRefresh = () => {
    setPage(() => 1)
  }

  const loadMoreData = () => {
    console.log(page) // 输出还是旧数据999,如何解决
  }

  useEffect(() => {
    handleRefresh()
  })

  useEffect(() => {
    loadMoreData()
  }, [page])