useMemo
类似于
vue中的computed, 用来缓存状态之间的计算结果
示例
jsx
import { useMemo } from "react";
function TodoList({ todos, tab }) {
const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
// ...
}解释
useMemo(calculateValue, dependencies)
calculateValue 是一个箭头函数,返回依赖的状态间计算的结果 dependencies 是一个依赖数组,当组件渲染时,依赖修改了才去重新计算
与 computed 的区别点:
useMemo是当重新渲染时依赖修改了则重新计算,而computed是当依赖修改时重新计算,useMemo的定义方式是hook函数,而computed是组件选项useMemo的缓存机制是依赖项数组内元素变化触发重新计算,而computed是响应式依赖变化触发重新计算
增补:api - memo
memo允许你的组件在props没有改变的情况下跳过重新渲染
使用 memo 将组件包装起来,以获得该组件的一个记忆化版本:
const MemoizedComponent = memo(SomeComponent, arePropsEqual?)- 默认情况下不需要指定
arePropsEqual函数,React将使用Object.is比较新/旧props - 记忆化指的是
props是否修改 - 组件自身内部的状态发生变化时仍会重新渲染
- 当其使用的
context发生变化时,它仍将重新渲染 - 最小化
props变化:确保组件在其props中接受必要的最小信息而不是整个对象