在哪里使 API 命中 ComonentDidMount 或在 ComonentDidUpdate [React.JS]

Dea*_*ool 1 javascript ecmascript-6 reactjs

在一次采访中,一位面试官问我,在一个简单的 React 应用程序中,您应该在哪里进行 API 命中?意义in which life-cycle methodClass-Component。我知道答案是ComponentDidMount- 因为这是我们获得完整渲染 dom 的第一个生命周期方法,这意味着 dom 现在准备好了!然后他问,但为什么不在comonentDidUpdate

现在,我告诉他我在某处读到的内容,我不知道这个问题的确切答案——除了 ComponentDidMount 首先运行,所以让它在那里。

现在,有人可以告诉我我的答案是否正确吗?还是我们应该在 ComponentDidUpdate() 中进行 API 命中?

我很迷惑。好心,有人用推理解释一下吗?提前致谢!

Aad*_*raj 5

这取决于您想要调用 API 的时间:

  1. 如果 API 调用只完成一次,则执行 componentDidMount
  2. 如果基于某种状态渲染后,您想再次获取数据,然后在 componentDidUpdate

编辑: 可以使用useEffect钩子在功能组件内处理相同的场景,如下所示:

1- 仅在组件呈现与以下相同时第一次运行componentDidMount

useEffect(() => {

   // Run only once when the component renders

}, []);  // Pass empty array as dependencies
Run Code Online (Sandbox Code Playgroud)

2- 每次通过 props 更改或本地 state 更改渲染组件时运行,与componentDidUpdate不比较之前和当前的 props 相同:

useEffect(() => {

   // Run every time the component re-renders including the first time

});  // Do NOT pass array dependencies
Run Code Online (Sandbox Code Playgroud)

3-仅在特定道具更改时运行,componentDidUpdate与道具比较相同:

useEffect(() => {

   // Run only when the component prop1 and prop2 changes

}, [prop1, prop2]);  // Pass props as array dependencies
Run Code Online (Sandbox Code Playgroud)

参考:使用效果挂钩