异步功能在使用效果获取旧道具



我有一些代码,比如:

let props.n default =1
    function consoleLog()
    {
        dispatch({n:2});
            useEffect(()=>
            {
                   async function c()
                   {
                     await new Promise((resolve,reject)=>setTimeout(() =>resolve(), 1500));
                     console.log(props.n);
                   }
                   c();
            },[]);
        return(null);
    }

我得到的结果是 1 ,但不是 2 ,如何使用新道具而不使用旧道具?

好吧,这真的很棘手,但您可以使用useRef在那里放置一些道具

function A(props) {
  const storage = useRef();
  storage.current = props.some;
  useEffect(()=>  {
    async function c() {
      await new Promise((resolve,reject)=>setTimeout(() =>resolve(), 1500));
      console.log(storage.current.some);
    }
    c();
  },[]);
}

由于props只是一个变量,因此某些延迟运行的函数可以访问数据的第一个版本,因此无法访问下一个版本。

但我相信这可能是实现最终目标的更合适的方式。

相关内容

  • 没有找到相关文章