Javascript 反应本机|使用状态异步等待

Javascript 反应本机|使用状态异步等待,javascript,react-native,hook,use-state,Javascript,React Native,Hook,Use State,我必须更新状态并在函数中使用它。它不会发生,因为我不能让它在当前系统中等待。它获取以前的数据并运行它。我怎么能拿着它 例如,页面的最后一个值为1,3为。Click正在运行,它应该像getReports中的1一样工作,但3可以工作。下一个是1,但我需要那个瞬间 const onClick = () => { setReports([]); setPage(1); getReports(); <- use page and reports list } cons

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

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

const onClick = () => {
    setReports([]);
    setPage(1);
    getReports(); <- use page and reports list
}
const onClick=()=>{
setReports([]);
设置页(1);

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


在您的示例中,我应该只将页码传递给getReports函数。据我所知,不需要保留该页码,而是state。此外,调用
setReports([])
看起来也不需要它,因为我假设getReports无论如何都应该覆盖它。

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

但是,如果只想使用状态,则不应立即调用
getReports()
,而是可以使用
useffect
侦听状态的更改,然后在更改时调用该方法。类似于:

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

  React.useEffect(() => {
    getReports();
  }, [page]);

 const onClick = () => {
    setReports([]);

    setPage(1);

    // If page number is always incrementing
    setPage(page+1);
 }

请详细说明并向问题添加尽可能多的信息,以便给出充分的答案我无论如何不会使用该页面,但由于我使用flatlist上的报告列表,它不应该处于状态吗?是的,通过调用setReports(data)将报告列表存储在状态中其中,data是来自api调用的响应,或者来自您获取数据的任何地方函数需要知道您在哪一页?如果是,则将其作为参数传递,而不是从状态获取。如果我有误解,您可能需要澄清您的问题。非常感谢您的时间。我的个人资料新建:'))点数<15不投票。当我达到15分时:D