ReactJS 教程

ReactJS - 主页 ReactJS - 简介 ReactJS - 路线图 ReactJS - 安装 ReactJS - 功能 ReactJS - 优势和缺点 ReactJS - 架构 ReactJS - 创建 React 应用程序 ReactJS - JSX ReactJS - 组件 ReactJS - 嵌套组件 ReactJS - 使用组件 ReactJS - 集合组件 ReactJS - 样式 ReactJS - 属性 (props) ReactJS - 使用属性创建组件 ReactJS - props 验证 ReactJS - 构造函数 ReactJS - 组件生命周期 ReactJS - 事件管理 ReactJS - 创建事件感知组件 ReactJS - Expense Manager 事件 ReactJS - 状态管理 ReactJS - 状态管理 API ReactJS - 无状态组件 ReactJS - Hooks 进行状态管理 ReactJS - Hooks 的组件生命周期 ReactJS - 布局组件 ReactJS - 分页 ReactJS - Material UI ReactJS - Http 客户端编程 ReactJS - 表单编程 ReactJS - 受控组件 ReactJS - 非受控组件 ReactJS - Formik ReactJS - 条件渲染 ReactJS - 列表 ReactJS - Key 键 ReactJS - 路由 ReactJS - Redux ReactJS - 动画 ReactJS - Bootstrap ReactJS - Map ReactJS - 表格 ReactJS - 使用 Flux 管理状态 ReactJS - 测试 ReactJS - CLI 命令 ReactJS - 构建和部署 ReactJS - 示例

Hooks

ReactJS - Hooks 简介 ReactJS - 使用 useState ReactJS - 使用 useEffect ReactJS - 使用 useContext ReactJS - 使用 useRef ReactJS - 使用 useReducer ReactJS - 使用 useCallback ReactJS - 使用 useMemo ReactJS - 自定义 Hooks

ReactJS 高级

ReactJS - 可访问性 ReactJS - 代码拆分 ReactJS - 上下文 ReactJS - 错误边界 ReactJS - 转发 Refs ReactJS - 片段 ReactJS - 高阶组件 ReactJS - 与其他库集成 ReactJS - 优化性能 ReactJS - Profiler API ReactJS - Portals ReactJS - 不使用 ES6 ECMAScript ReactJS - 不使用 JSX 的 React ReactJS - Reconciliation ReactJS - Refs 和 DOM ReactJS - 渲染道具 ReactJS - 静态类型检查 ReactJS - 严格模式 ReactJS - Web 组件

其他概念

ReactJS - 日期选择器 ReactJS - Helmet ReactJS - 内联样式 ReactJS - PropTypes ReactJS - BrowserRouter ReactJS - DOM ReactJS - 轮播 ReactJS - 图标 ReactJS - 表单组件 ReactJS - 参考 API

ReactJS 有用资源

ReactJS - 快速指南 ReactJS - 备忘录 Axios - 备忘录 ReactJS - 有用资源 ReactJS - 讨论


ReactJS - PureComponent 类

众所周知,React 是一个非常流行的 JS 库,用于创建交互式用户界面。它完全基于组件。因此,React 中存在一种称为 PureComponent 的组件。它与 Component 非常相似,但它避免了对相同 props 和状态进行重新渲染。

语法

class MyComponent extends PureComponent {
   render() {
      return <h1>Hiii, {this.props.name}!</h1>;
   }
}

我们可以在上面的代码示例中看到。我们扩展了 PureComponent 来代替 Component。我们通常会扩展 Components。因此,为了避免为相同的 props 和 state 重新渲染类组件,我们可以扩展 PureComponent。

React 中的 PureComponent 只是常规 Component 的增强版本。它能够执行 Component 的所有功能。PureComponents 的主要优点是它在重新渲染之前会检查 props 和 state 是否已更改。

PureComponent 类似于自定义的"shouldComponentUpdate"方法。shouldComponentUpdate 方法的作用是确定是否应更新组件。但 PureComponent 会自动执行此检查,仅关注数据的变化,这可以帮助我们的应用程序更有效地运行。

如何使用它?

当 React 中组件的父组件发生变化时,子组件通常会更新或重新渲染。即使传输给子组件的新数据与旧数据相同,也会发生这种情况。

但是,React 提供了一种优化来避免低效的重新渲染。我们可以创建一个组件,当其父组件更改时,只要它接收的新 props 和状态等于我们拥有的旧数据,它就不会重新渲染。

如果我们在 React 中使用类组件,我们可以通过让我们的组件扩展一个名为"PureComponent"的类来启用此优化。这会告诉 React 仅在其接收的数据实际发生变化时才重新渲染组件。

示例

示例 −计数器应用

在此,我们将使用 PureComponent 创建一个简单的计数器应用,以展示它如何优化渲染 −

  • 因此,我们将有一个扩展 PureComponent 的 Counter 组件。

  • 我们将在 MyApp 组件中显示当前计数值。

  • 每次我们点击"增加"按钮时,计数器都会增加,并且计数器组件在计数 prop 发生变化之前不会更新。

  • 此代码解释了 PureComponent 如何在重新渲染之前检查 prop 值是否已更改,以优化渲染。

import React, { PureComponent, useState } from 'react';

class Counter extends PureComponent {
   render() {
      console.log("Counter was rendered at", new Date().toLocaleTimeString());
      return <div>Count: {this.props.count}</div>;
   }
}
export default function MyApp() {
   const [count, setCount] = useState(0);
   const increment = () => {
      setCount(count + 1);
   };
   return (
      <>
         <button onClick={increment}>Increment</button>
         <Counter count={count} />
      </>
   );
}

输出

increment count 4 app

示例 − 列表组件

让我们使用 PureComponent 创建另一个 React 应用。在此示例中,我们将有一个使用 PureComponent 呈现项目列表的 ListComponent。我们有一个 ListComponent,它在其状态下维护水果列表。该组件呈现 ListItem 组件列表,每个组件都显示一种水果。我们已将 PureComponent 用于 ListItem 组件,以利用其自动检查 prop 更改的功能。

import React, { PureComponent } from 'react';
class ListItem extends PureComponent {
   render() {
      return <li> {this.props.value}</li>;
   }
}
class ListComponent extends PureComponent {
   constructor(props) {
      super(props);
      this.state = {
         items: ['Apple', 'Banana', 'Orange'],
      };
   }
   render() {
      return (
         <div>
            <h2>Fruit List:</h2>
            <ul> {
               this.state.items.map((item, index) => (
                  <ListItem key={index} value={item} />
               ))
            }
            </ul>
         </div>
      );
   }
}

export default ListComponent;

输出

fruit list

此示例展示了 PureComponent 在处理列表或项目数组时如何有用,因为它有助于在数据保持不变时避免不必要的重新渲染。

使用 Pure Component 的示例 −

此 React 应用程序由两个组件组成:ParentComponent 和 ChildComponent。此应用程序的主要目标是展示 PureComponent 在优化 React 应用程序中的渲染方面的用途。

import React, { PureComponent } from 'react';

class ChildComponent extends PureComponent {
   render() {
      return <h1>Hello, {this.props.name}!</h1>;
   }
}
class ParentComponent extends PureComponent {
   constructor(props) {
      super(props);
      this.state = {
         name: 'John',
      };
   }   
   render() {
      return <ChildComponent name={this.state.name} />;
   }
}

export default ParentComponent;

输出

hello john

摘要

PureComponent 是一个改进我们应用程序的 React 工具。它确保我们程序的组件仅在必要时更新。这可以帮助我们的软件更有效地运行并更快地响应用户输入。

reactjs_reference_api.html