- 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 APP中引入事件
- ReactJS - 状态管理
- ReactJS - 状态管理 API
- ReactJS - 无状态组件
- ReactJS - 使用 React Hooks 进行状态管理
- ReactJS - 使用 React 钩子的组件生命周期
- ReactJS - 组件的布局
- ReactJS - 分页
- ReactJS - Material 用户界面
- ReactJS - Http 客户端编程
- ReactJS - 表单编程
- ReactJS - 受控组件
- ReactJS - 不受控制的组件
- ReactJS - Formik
- ReactJS - 条件渲染
- ReactJS - 列表
- ReactJS - 键
- ReactJS - 路由
- ReactJS - 冗余
- ReactJS - 动画
- ReactJS - 引导程序
- ReactJS - 地图
- ReactJS - 表格
- ReactJS - 使用 Flux 管理状态
- ReactJS - 测试
- ReactJS - CLI 命令
- ReactJS - 构建和部署
- ReactJS - 示例
- ReactJS - 钩子简介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定义钩子
- ReactJS - 可访问性
- ReactJS - 代码拆分
- ReactJS - 上下文
- ReactJS - 错误边界
- ReactJS - 转发引用
- ReactJS - 片段
- ReactJS - 高阶组件
- ReactJS - 与其他库集成
- ReactJS - 优化性能
- ReactJS - 分析器 API
- ReactJS - 门户
- ReactJS - 没有 ES6 ECMAScript 的 React
- ReactJS - 没有 JSX 的 React
- ReactJS - 协调
- ReactJS - 引用和 DOM
- ReactJS - 渲染属性
- ReactJS - 静态类型检查
- ReactJS - 严格模式
- ReactJS - Web 组件
- ReactJS - 日期选择器
- ReactJS - Helmet
- ReactJS - 内联样式
- ReactJS - 属性类型
- ReactJS - 浏览器路由器
- ReactJS - DOM
- ReactJS - 旋转木马
- ReactJS - 图标
- ReactJS - 表单组件
- ReactJS - 参考 API
ReactJS - PureComponent 类
众所周知,React 是一个非常流行的 JS 库,用于创建交互式用户界面。它完全基于组件。因此,React 中存在一种称为 PureComponent 的组件。它与组件非常相似,但是它避免了相同属性和状态的重新渲染。
语法
class MyComponent extends PureComponent {
render() {
return <h1>Hiii, {this.props.name}!</h1>;
}
}
我们可以在上面的代码示例中看到。我们扩展了 PureComponent 来代替 Component。我们通常会扩展组件。因此,为了避免为相同的属性和状态重新渲染类组件,我们可以扩展 PureComponent。
React 中的 PureComponent 只是常规组件的增强版本。它能够执行组件的所有功能。PureComponents 的主要优点是,在重新渲染之前,它会检查以验证属性和状态是否已更改。
PureComponent 类似于自定义的 “shouldComponentUpdate” 方法。shouldComponentUpdate 方法的作用是确定是否应更新组件。但是 PureComponent 会自动进行此项检查,只关注数据的变化,这可以帮助我们的应用程序更有效地运行。
如何使用它?
当组件的父组件在 React 中发生变化时,子组件通常会被更新或重新渲染。即使传输给孩子的新数据与旧数据相同,也会发生这种情况。
但是,React 提供了一种优化来避免低效的重新渲染。我们可以创建一个组件,只要它接收到的新属性和状态与我们拥有的旧数据相等,当它的父级更改时不会重新渲染。
如果我们在 React 中使用类组件,我们可以通过让我们的组件扩展一个名为“PureComponent”的类来启用此优化。这告诉 React 只在它接收到的数据实际发生变化时才重新渲染组件。
例子
示例 - 计数器应用程序
在此,我们将使用 PureComponent 创建一个简单的计数器应用程序,以展示它如何优化渲染 -
- 因此,我们将有一个扩展 PureComponent 的 Counter 组件。
- 我们将在 MyApp 组件中显示当前计数值。
- 每次我们点击“增量”按钮时,计数器都会增加,并且在计数属性更改之前,计数器组件不会更新。
- 此代码解释了 PureComponent 如何在重新渲染之前检查属性值是否已更改,以便优化渲染。
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} />
</>
);
}
输出
示例 - 列表组件
让我们使用 PureComponent 创建另一个 React 应用程序。在此示例中,我们将有一个 ListComponent,它使用 PureComponent 呈现项目列表。我们有一个 ListComponent,它在其状态下维护一个水果列表。该组件呈现 ListItem 组件的列表,每个组件都显示一个水果。我们已将 PureComponent 用于 ListItem 组件,以利用其自动检查属性更改的功能。
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;
输出
此示例展示了 PureComponent 在处理项目列表或数组时如何发挥作用,因为它有助于避免在数据保持不变时进行不必要的重新渲染。
示例 - 使用纯组件
这个 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;
输出
总结
PureComponent 是一个 React 工具,它改进了我们的应用程序。它确保我们程序的组件仅在必要时更新。这可以帮助我们的软件更有效地运行,并更快地响应用户输入。