useEffect 传递的参数未定义

时间:2021-01-07 21:39:35

标签: reactjs react-native react-hooks

所以我是 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 的形式出现?

谢谢

2 个答案:

答案 0 :(得分:1)

useEffect 函数永远不会接收任何参数。它只是一个函数,当您指定的任何依赖项发生更改(在本例中为 print 的值)时,将调用该函数。

这似乎不是一个 useEffect 钩子用例。你到底想在这里完成什么?

答案 1 :(得分:-1)

首先: let 关键字在块范围内声明变量。

这意味着不能在 btnPrint 函数块之外访问它。

其次,useEffect 是一个生命周期钩子。这意味着它在组件安装或卸载时运行。如果你传递一个空数组,它只会运行一次。如果您传递对其他变量、函数等的引用数组,则只要提供的变量发生变化,它就会运行。