我必须更新状态并在函数中使用它。这不会发生,因为我无法在当前系统中让它等待。它获取先前的数据并运行它。我怎么握住它?
例如,页面的最后一个值为3时为1。单击正在运行,在getReports中应为1,但是3可以工作。下一个是1,但我需要那个瞬间。
const onClick = () => {
setReports([]);
setPage(1);
getReports(); <- use page and reports list
}
答案 0 :(得分:2)
快速解决方案,获取先前的值,对其进行递增,并使用该新值更新状态。在下一行中,将与参数相同的递增值传递给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);
}
答案 1 :(得分:0)
React中的设置状态是异步的。这是因为它会重新提供dom(或其部分),并且在调用setState
(或一个钩子)之后的任何代码将继续照常执行。就设置状态而言,请忘记异步等待。
在您的示例中,我应该将页码传递给getReports函数。据我所知,没有必要保持数字为state。另外,对setReports([])
的调用似乎也不需要,因为我认为getReports应该仍然覆盖它。