为了账号安全,请及时绑定邮箱和手机立即绑定

反应本机 | useState 异步等待

反应本机 | useState 异步等待

慕码人8056858 2023-05-19 15:09:32
我必须更新状态并在函数中使用它。它不会发生,因为我不能让它在当前系统中等待。它获取以前的数据并运行它。我怎么拿得住?例如3时页面的最后一个值为1。Click正在运行,它应该作为getReports中的1工作,但3工作。下一个是 1,但我需要那个瞬间。const onClick = () => {    setReports([]);    setPage(1);    getReports(); <- use page and reports list}
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

快速解决方案,获取以前的值,增加它并用这个新值更新状态。在下一行中,将相同的增量值作为参数传递给getReports(new Value)。在这里,我们将仅使用状态来保留最后的数字/索引。


但是如果你只想使用状态,那么你不应该getReports()马上调用,相反你可以使用useEffect监听状态的变化,然后在变化时调用方法。就像是:


const [page, setPage] = React.useState(0);


  React.useEffect(() => {

    getReports();

  }, [page]);


 const onClick = () => {

    setReports([]);


    setPage(1);


    // If page number is always incrementing

    setPage(page+1);

 }


查看完整回答
反对 回复 2023-05-19
?
holdtom

TA贡献1805条经验 获得超10个赞

在 React 中设置状态是异步的。这是因为它重新呈现 dom(或其部分),并且setState调用(或挂钩)之后的任何代码将继续正常执行。就设置状态而言,忘记异步等待。

在您的示例中,我应该将页码传递给 getReports 函数。据我所知,没有必要保留数字状态。此外,对 的调用setReports([])看起来也不需要,因为我认为 getReports 无论如何都应该覆盖它。


查看完整回答
反对 回复 2023-05-19
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信