【问题标题】:useEffect passed argument is undefineduseEffect 传递的参数未定义
【发布时间】:2021-01-08 05:48:18
【问题描述】:

所以我是反应钩子的新手,似乎无法理解 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

谢谢

【问题讨论】:

  • 你期望它是什么? useEffect 回调不接受参数。
  • 谢谢....直到

标签: reactjs react-native react-hooks


【解决方案1】:

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

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

【讨论】:

  • 你实际上回答了我的问题,出于某种原因,我认为我可以在那里传递一个论点。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-02-15
    • 2021-07-09
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2019-04-25
    • 2011-10-21
    相关资源
    最近更新 更多