react 怎么根据 state 和 props 的变化去更新 dom 树的

69 阅读1分钟

React 通过对组件的 render 方法进行比对,来决定是否需要更新 DOM 树。如果组件的 state 或 props 发生变化,React 会重新调用组件的 render 方法,生成新的虚拟 DOM 树,然后与旧的虚拟 DOM 树进行比对,找出差异,最小化地更新 DOM 树以匹配新的虚拟 DOM。

这个过程是自动的,无需人工干预。但是,你可以通过几种方法来优化这个过程:

  1. 使用 PureComponent 或 shouldComponentUpdate 方法来避免不必要的重渲染。
  2. 使用 React.memo 来包装函数组件,以防止它们在某些 props 未改变的情况下重渲染。
  3. 使用 useCallback 和 useMemo 等 Hooks 来避免在每次渲染时都创建新的函数或值。

以下是一个使用 React.memo 的函数组件示例,它会在它的 props 没有改变时避免重渲染:

import React from 'react';
 
const MyComponent = React.memo((props) => {
  // 组件内容
  return <div>{props.value}</div>;
});
 
export default MyComponent;

使用 React.memo 的组件会在其 props 不变化的情况下,避免进行 DOM 操作,从而提高性能。