javascript - 我想知道将 `useEffect()` 与空依赖数组一起使用与不使用 `useEffect()` 本身之间的区别

标签 javascript reactjs react-native

我知道没有数组的 useEffect() 只在第一次渲染时运行回调。

那么useEffect(()=>{},[])和没有useEffect()的区别是什么。

我的意思是:

function myComponent() {
  // some states, variables

  useEffect(() => {
    // do something on mount <= this is my current concern.
  }, [/* empty */]);

  // return Element ...
}

还有这个:

function myComponent() {
  // some states, variables

  // do something on mount <= this is my current concern.
  
  // return Element ...
}

最佳答案

在 React 中,只要组件的状态或其中一个 props 发生变化,组件就会重新渲染。
它这样做的原因是它可以对所提到的数据的变化做出“ react ”,并相应地反射(reflect) UI 变化。

每次组件重新渲染时,其中未缓存的任何逻辑(函数、变量等)也会重新渲染

useEffect 帮助我们对依赖数组中声明的状态或 Prop 的变化使用react。
它为我们提供了在此类事件中自动运行回调函数的选项。

useEffect 具有一个空的依赖项数组,将在安装组件时仅运行一次。

所以在这个例子中——

function myComponent() {
  // some states, variables

  useEffect(() => {
    // do something on mount <= this is my current concern.
  }, [/* empty */]);

  // return Element ...
}

useEffect 中的回调函数只会运行一次,即组件首次“激活”时。
后续渲染将不会调用它。

虽然在此示例中 -

function myComponent() {
  // some states, variables

  // do something on mount <= this is my current concern.
  
  // return Element ...
}

每次组件重新渲染时,无论你放在那里什么都会运行。
这是否可行取决于您的用例以及您尝试运行什么功能,运行是否“便宜”等。

关于javascript - 我想知道将 `useEffect()` 与空依赖数组一起使用与不使用 `useEffect()` 本身之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71823520/

相关文章:

javascript - 在同一页面上多次调用 jQuery.noConflict()

javascript - jquery .off() 与指针事件 : none

javascript - 在 React/Redux 中更改 url

javascript - 与 React Native 开 Jest 得到问题

javascript - 从终端(iOS)运行 React Native 应用程序时出错

javascript - 路径和向其传递 Prop 的问题(带有 map 的组件)

javascript - 我需要将文本放在一个 <h> 中,它位于一个 Div 中,该 Div 位于另一个 Div 中,该 Div 位于另一个 Div 中

javascript - userscript - 拦截图像 url 并提供不同的图像

javascript - 如何在生产构建中排除/禁用 React 开发人员工具?

javascript - 数字的 Formik 输入值即使在作为数字通过 Formik 验证后也变为字符串