React 第二十六章 React.memo

React.memo 是 React 提供的一个高阶组件,用于对函数组件进行性能优化。

React.memo 的源码实际上就是返回一个 PureComponent 组件:

js 复制代码
function memo(FuncComp){
	return class Memo extends PureComponent{
      render(){
           return <>{FuncComp(this.props)}</>
        }
    }
}

官方地址: https://zh-hans.legacy.reactjs.org/docs/react-api.html#reactmemo

React.memo 接受一个组件作为参数,并返回一个新的优化过的组件。这个新的组件在接收到新的 props 时,会进行浅比较来判断是否需要重新渲染。

使用 React.memo 可以避免不必要的重新渲染,提高组件的性能。

使用方法如下:

js 复制代码
import React from 'react';

const MyComponent = React.memo((props) => {
  // 组件的渲染逻辑
  // ...
});

export default MyComponent;

需要注意的是,React.memo 默认只进行浅比较,如果组件的 props 是一个复杂对象,需要自定义比较函数来判断是否需要重新渲染。

比较函数需要返回一个布尔值

  • true 表示不重新渲染
  • false 表示重新渲染。

比较函数可以通过第二个参数传入 React.memo

jsx 复制代码
import React from 'react';

const MyComponent = React.memo((props) => {
  // 组件的渲染逻辑
  // ...
}, (prevProps, nextProps) => {
  // 自定义比较函数
  // 返回 true 或 false
});

React.memo 可以应用于函数组件和类组件,但是对于类组件,它只会对 props 进行浅比较。如果需要对类组件的 state 进行优化,可以考虑使用 React.PureComponent

相关推荐
BreezeJiang8 小时前
JWT 登录不是存个 token:React 鉴权真正要闭合的是一条数据流
javascript·react.js·axios
四千岁8 小时前
稀疏向量BM25Retriever不支持中文怎么办?jieba来帮忙
前端·javascript·后端
这是个栗子8 小时前
【JS代码分析】前端鉴权基础:Token 的本地存储与状态重置实践
开发语言·前端·javascript
半个落月8 小时前
React 性能优化入门:用 memo 避免无关的子组件重复渲染
前端·react.js
界面开发小八哥9 小时前
界面控件DevExpress Blazor v26.1新版亮点 - TreeList & 数据编辑器
javascript·编辑器·.net·界面控件·blazor·devexpress·用户界面
风月说与山鬼9 小时前
二、uni-app入口文件(main.js)
javascript·uni-app
mCell18 小时前
Lua 编程入门:从基础语法到元表
javascript·算法·lua
伟大的兔神18 小时前
我做了一个本地优先的 AI 图片工作台:Loomora v1.0.0 正式发布
前端·javascript·vue.js
用户9385156350720 小时前
React + JWT 登录鉴权底层原理与工程化实践
前端·react.js
fangzhanpeng16821 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript