ReactJS —— componentDidUpdate() 方法


在本文中,我们将学习如何在 DOM 树中更新组件时执行函数。

只有在组件更新或传递给其的属性更改时,才会调用此方法。它不会在组件的初始渲染中调用。此方法主要用于执行某些仅在更新 DOM 时才需要执行的操作。

为了避免任何性能问题,建议使用条件循环来使用此方法,如下所示:

componentDidUpdate(prevProps, prevState) {
   if (prevState.text !== this.state.text) {
      // Write logic here.
   }
}

语法

componentDidUpdate(prevProps, prevState, snapshot)

参数

  • prevProps ——传递给此组件的上一个属性

  • prevState   ——组件的上一个状态

  • snapshot   ——getSnapshotBeforeUpdate() 方法返回的值

示例

在此示例中,我们将构建一个变色的 React 应用程序,它将在单击按钮时更改文本颜色,该按钮将更新组件,并且将调用 **componentDidUpdate** 方法。

在以下示例中,我们的第一个组件是 **App**。此组件是 **Change **组件的父元素。我们单独创建 **Change **,并且将其添加到 **App** 组件中的 JSX 树中。因此,只需要导出 App 组件。

App.jsx

import React from 'react';
class App extends React.Component {
   render() {
      return (
         <div>
            <h1>Tutorialspoint</h1>
            <Change />
         </div>
      );
   }
}
class Change extends React.Component {
   constructor(props) {
      super(props);
      this.state = { color: '#000' };
   }
   componentDidUpdate() {
      console.log('componentDidUpdate method is called');
   }
   render() {
      return (
         <div>
            <h1 style={{ color: this.state.color }}>Simply Easy Learning</h1>
            <button onClick={() => this.setState({ color: '#0f0' })}>
               Change Color
            </button>
         </div>
      );
   }
}
export default App;

输出

将产生以下结果。

更新于:2021 年 3 月 18 日

1000+ 次浏览

开启你的 职业生涯

完成课程后获得认证

开始
广告