在带有钩子的react功能组件中多次渲染

IT技术 reactjs react-hooks use-effect
2021-05-14 08:55:55

其实我没有得到这个问题的正确观点。所以寻求帮助。我有这个状态全功能组件。我在这里注意到的事情是,当我使用 useEffect 钩子获取数据时,我会正确地得到响应。

问题是,当我在 return 语句中执行 console.log("ok") 时,它会在控制台中多次提供输出。图片添加如下:

这是我的状态和 useEffect 钩子

在此处输入图片说明

这是我的返回函数

在此处输入图片说明

这是我每次浏览页面时得到的控制台输出。 在此处输入图片说明

为什么 console.log("ok") 执行多次?

2个回答

它不是执行multiple次数,而是执行 5 次:

  1. useEffect (第一次渲染)
  2. setMovies
  3. setHeroImage
  4. setCusrrentPage
  5. setTotalPages

useEffect有 deps ,[]所以这只发生在第一次渲染。然后您要更改状态 4 次,因此会发生重新渲染。这并不意味着 DOM 更改了 5 次。

React 非常简单,基本上一直在重新渲染所有内容。如果组件的状态已更改,则会触发重新渲染。您更新状态 4 次,这就是原因。