反应本机 | useState 异步等待

我必须更新状态并在函数中使用它。它不会发生,因为我不能让它在当前系统中等待。它获取以前的数据并运行它。我怎么拿得住?


例如3时页面的最后一个值为1。Click正在运行,它应该作为getReports中的1工作,但3工作。下一个是 1,但我需要那个瞬间。


const onClick = () => {

    setReports([]);

    setPage(1);

    getReports(); <- use page and reports list

}


慕码人8056858
浏览 151回答 2
2回答

凤凰求蛊

快速解决方案,获取以前的值,增加它并用这个新值更新状态。在下一行中,将相同的增量值作为参数传递给getReports(new Value)。在这里,我们将仅使用状态来保留最后的数字/索引。但是如果你只想使用状态,那么你不应该getReports()马上调用,相反你可以使用useEffect监听状态的变化,然后在变化时调用方法。就像是:const [page, setPage] = React.useState(0);&nbsp; React.useEffect(() => {&nbsp; &nbsp; getReports();&nbsp; }, [page]);&nbsp;const onClick = () => {&nbsp; &nbsp; setReports([]);&nbsp; &nbsp; setPage(1);&nbsp; &nbsp; // If page number is always incrementing&nbsp; &nbsp; setPage(page+1);&nbsp;}

holdtom

在 React 中设置状态是异步的。这是因为它重新呈现 dom(或其部分),并且setState调用(或挂钩)之后的任何代码将继续正常执行。就设置状态而言,忘记异步等待。在您的示例中,我应该将页码传递给 getReports 函数。据我所知,没有必要保留数字状态。此外,对 的调用setReports([])看起来也不需要,因为我认为 getReports 无论如何都应该覆盖它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript