React Native-useState设置数据更新延迟

所以在我的应用程序中,我的按钮应该设置我的数据,然后导航到下一页。这里的问题是数据更新速度不够快 (我认为)。控制台显示 null (这是我设置的初始数据),然后它导航到携带 null 数据的下一页。如果我回到上一页,然后再次转到下一页,它将携带以前没有发送的数据。我试过 setTimeout 的方式错误

所以在我的应用程序中,我的按钮应该设置我的数据,然后导航到下一页。这里的问题是数据更新速度不够快 (我认为)。控制台显示 null (这是我设置的初始数据),然后它导航到携带 null 数据的下一页。如果我回到上一页,然后再次转到下一页,它将携带以前没有发送的数据。我试过 setTimeout 的方式错误

  const [foto, setFoto] = useState(null);
  const sendQUtest = () => {
    setFoto('QUtest');
    setTimeout(() => {
      console.log('assessmentTimeout: ' + foto);
    }, 5000);
    console.log('assessment: ' + foto);
    navigator.navigate('pembayaranAssessment', foto);
  };
  const sendTOPtest = () => {
    setFoto('TOPtest');
    console.log('assessment: ' + foto);
    navigator.navigate('pembayaranAssessment', foto);
  };

我不知道是否有无论如何等待数据。我在其他问题中看到的解决方案是使用 useEffect,但在这一个我需要它在 onPress 之后。

2

usestate 是异步的,你不能真正做一个等待函数,因为它有两种方法,其中一种是使用useEffect钩子,如下所示,你可以在一个函数中有多个 useEffect 使用 useEffect 来检查值何时更改,然后导航

    const [foto, setFoto] = useState(null);
       useEffect(()=>{
//this will fire  at the beginning and on foto changing value
if(foto == null){
//will ignore first run
}else{ navigator.navigate('pembayaranAssessment', foto); 
}},[foto])
  const sendQUtest = () => {
    setFoto('QUtest');
    setTimeout(() => {
      console.log('assessmentTimeout: ' + foto);
    }, 5000);
    console.log('assessment: ' + foto);
    //navigator.navigate('pembayaranAssessment', foto);
  };
  const sendTOPtest = () => {
    setFoto('TOPtest');
    console.log('assessment: ' + foto);
   // navigator.navigate('pembayaranAssessment', foto);
  };
1

YES setstate 将需要一些时间来更新,您可以直接将数据发送到您的导航功能

navigator.navigate('pembayaranAssessment','TOPtest');
0

尝试这种方式

 const sendQUtest = () => {
    setFoto('QUtest');
    setTimeout(() => {
      navigator.navigate('pembayaranAssessment', foto); // add here
    }, 200);
  };
  const sendTOPtest = () => {
    setFoto('TOPtest');
    setTimeout(() => {
      navigator.navigate('pembayaranAssessment', foto); // add here
    }, 200);
  };

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(877)
将不同的付款配置文件链接到 Google开发人员帐户
上一篇
M4A和AAC音频文件有什么区别
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(72条)