[React] memo 和 useMemo 有和区别?【热度: 654】

关键词:memo useMemo

React.memouseMemo 是在 React 中处理性能优化的两个工具,虽然它们名称相似,但是它们的作用和使用方法是不同的。

React.memo 是高阶组件,它可以用来优化函数组件的渲染性能。它会比较当前组件的 propsstate 是否发生了变化,如果都没有变化,就不会重新渲染该组件,而是直接使用之前的结果。例如:

import React from 'react';
 
const MyComponent = React.memo(props => {
  return <div>{props.value}</div>;
});

在上面的代码中,React.memo 包装了一个简单的函数组件 MyComponent。如果该组件的 value prop 和 state 没有发生变化,那么就会直接使用之前的结果不会重新渲染。

useMemoReact 中一个 hooks,它可以用来缓存计算结果,从而优化组件渲染性能。它接受两个参数:要缓存的计算函数和依赖项数组。每当依赖项发生变化时,该计算函数就会重新计算,并返回一个新的结果。例如:

import React, { useMemo } from 'react';
 
const MyComponent = props => {
  const result = useMemo(() => expensiveComputation(props.value), [props.value]);
  return <div>{result}</div>;
};

在上面的代码中,我们传递了一个计算函数 expensiveComputation,以及一个依赖项数组 [props.value]。如果依赖项没有发生变化,myValue 就会被缓存起来,不会重新计算。

总的来说:

React.memo 的作用是优化函数组件的渲染性能,它可以比较组件的 propsstate 是否发生变化,如果没有变化,就不会重新渲染。

useMemo 的作用是缓存计算结果,从而避免重复计算,它接受一个计算函数和一个依赖项数组,当依赖项发生变化时,计算函数就会重新计算,返回一个新的结果,否则就会使用之前的缓存结果。