我有一些代码,比如:
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
只是一个变量,因此某些延迟运行的函数可以访问数据的第一个版本,因此无法访问下一个版本。
但我相信这可能是实现最终目标的更合适的方式。