反应本机 | useState 异步等待
React Native | useState Async-Await
我必须更新状态并在函数中使用它。它不会发生,因为我不能让它在当前系统中等待。它获取以前的数据并运行它。怎么拿得住?
比如页面的最后一个值是1,当3.Click是运行,在getReports中应该是1,但是3有效。下一个是1,但我需要那个瞬间。
const onClick = () => {
setReports([]);
setPage(1);
getReports(); <- use page and reports list
}
在 React 中设置状态是异步的。这是因为 re-renders dom(或其部分),以及调用 setState
之后的任何代码(或钩子)将继续正常执行。就设置状态而言,忘记异步等待。
在您的示例中,我应该只将页码传递给 getReports 函数。据我所知,没有必要保留数字状态。此外,对 setReports([])
的调用看起来也不需要,因为我认为 getReports 无论如何都应该覆盖它。
快速解决方案,获取先前的值,递增它并用这个新值更新状态。在下一行中,将相同的增量值作为参数传递给 getReports(new Value)
。在这里,我们将仅使用状态来保留最后一个 number/index.
但是如果你只想使用状态,那么你不应该立即调用 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,当3.Click是运行,在getReports中应该是1,但是3有效。下一个是1,但我需要那个瞬间。
const onClick = () => {
setReports([]);
setPage(1);
getReports(); <- use page and reports list
}
在 React 中设置状态是异步的。这是因为 re-renders dom(或其部分),以及调用 setState
之后的任何代码(或钩子)将继续正常执行。就设置状态而言,忘记异步等待。
在您的示例中,我应该只将页码传递给 getReports 函数。据我所知,没有必要保留数字状态。此外,对 setReports([])
的调用看起来也不需要,因为我认为 getReports 无论如何都应该覆盖它。
快速解决方案,获取先前的值,递增它并用这个新值更新状态。在下一行中,将相同的增量值作为参数传递给 getReports(new Value)
。在这里,我们将仅使用状态来保留最后一个 number/index.
但是如果你只想使用状态,那么你不应该立即调用 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);
}