所以我是 React 钩子的新手,似乎无法理解 useEffect 的工作原理...
我有一个钩子:
const [print, setPrint] = useState(false);
使用效果:
useEffect((x) => {
console.log("2nd => ",x)
}, [print]);
然后我有一个按钮功能:
const btnPrint = async () => {
let x = 1;
console.log("1st => ",x);
setPrint(true);
};
按下按钮后,输出为:
1st => 1
2nd => undefined
为什么 x
在 useEffect 函数中以 undefined
的形式出现?
谢谢
答案 0 :(得分:1)
useEffect 函数永远不会接收任何参数。它只是一个函数,当您指定的任何依赖项发生更改(在本例中为 print
的值)时,将调用该函数。
这似乎不是一个 useEffect 钩子用例。你到底想在这里完成什么?
答案 1 :(得分:-1)
首先:
let
关键字在块范围内声明变量。
这意味着不能在 btnPrint 函数块之外访问它。
其次,useEffect 是一个生命周期钩子。这意味着它在组件安装或卸载时运行。如果你传递一个空数组,它只会运行一次。如果您传递对其他变量、函数等的引用数组,则只要提供的变量发生变化,它就会运行。