我有一些类似的代码:
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。 我该如何使用新道具而不是旧道具?
答案 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
只是一个变量,该变量某些在运行中延迟的功能可以访问第一个版本的数据,因此不能访问下一个版本。
但是我相信这可能是实现最终目标的更合适的方法。