我有这种情况,我不知道为什么会发生..
我有一个自定义钩子,其中包含一个在执行另一个函数之前无法初始化的变量。
我认为这与同步情况无关,因为 console.log( '..', name ) 在执行 useEffect() 之前显示了变量的值,我还放了一个按钮来手动触发 useEffect 挂钩(使用另一个状态变量并在 onClick 函数中更改其值)并且该值也未定义。
export const useMagic = () => {
...
let name: string;
...
const initMagic = async () => {
...
name= 'Copperfield';
console.log('the value of the variable is:', name);
...
}
useEffect(()=> {
const loadRabbit = async () => {
console.log('The name is', name); //undefined *** HERE IS THE PROBLEM ***
}
loadRabbit();
}, [someDeps]); // I can't put name inside the dependencies because is used before being assigned. I can't initialize the variable because I need another value to create it.
}
我在变量上使用 useRef 解决了这种情况,并将其放入依赖数组中。
但是,为什么会这样?我不知道 React 如何管理变量的值。
谢谢!