useeffect中的异步功能获取旧道具

时间:2019-07-18 07:57:45

标签: reactjs react-redux react-hooks

我有一些类似的代码:

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。 我该如何使用新道具而不是旧道具?

1 个答案:

答案 0 :(得分:0)

好的,这确实很棘手,但是您可以使用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只是一个变量,该变量某些在运行中延迟的功能可以访问第一个版本的数据,因此不能访问下一个版本。

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