npm 包 @welldone-software/why-did-you-render 使用教程

阅读时长 5 分钟读完

简介

@welldone-software/why-did-you-render 是一款用于识别 React 组件不必要渲染的 npm 包。它可以在你的开发环境中找出组件渲染原因并提供调试信息。这个包可以让你更好地优化 React 应用程序性能,避免因不必要的组件渲染导致的不必要的重新渲染。

原理

当 React 组件的 state 或 props 发生改变时,React 引擎会重新渲染该组件。有时,React 组件在其 state 或 props 没有改变的情况下也会重新渲染。这通常是因为组件使用了一些不稳定的函数或对象(如匿名函数或对象字面量)或者因为组件没有使用 shouldComponentUpdate 方法或 PureComponent 组件。

@welldone-software/why-did-you-render 通过修改 React 引擎源代码(只在开发模式下),记录组件渲染信息并报告何时出现不必要的渲染。

使用

安装

在项目中使用以下命令安装 @welldone-software/why-did-you-render

引入

在项目中的入口文件中引入 @welldone-software/why-did-you-render

-- -------------------- ---- -------
------ ----- ---- --------
------ -------- ---- ------------
------ --- ---- --------

-- --------------------- --- ------------- -
  ----- - --------------- - - -------------------------------------------------
  -----------------------
-

-------------------- --- ---------------------------------

用法

@welldone-software/why-did-you-render 提供的接口是名为 whyDidYouRender 的函数。此函数接受两个参数:

  • React: React 引擎。

  • options: 一个对象,可以包含以下属性:

    • trackAllPureComponents: 是否要跟踪所有 PureComponent 组件的渲染。
    • _consoleError: 是否要使用 console.error 输出调试信息。

看结果

现在你可以打开你的应用程序并调试。当应用程序中的某个组件出现不必要的渲染时,@welldone-software/why-did-you-render 会在浏览器控制台显示一条警告消息。

示例

下面是一个简单的 App 组件,可以演示如何使用 @welldone-software/why-did-you-render

-- -------------------- ---- -------
------ ----- ---- --------

----- --- ------- --------------- -
  ------------------ -
    -------------
    ---------- - -
      ------ --
      ---------- -----
    --
    ---------------- - ----------------------------
    ----------------- - -----------------------------
  -

  ------------- -
    ---------------
      ------ ---------------- - --
    ---
  -

  -------------- -
    ---------------
      ---------- ----------------------
    ---
  -

  -------- -
    ------ -
      -----
        ------- -------------------------------- -- -----------------------------
        --- --
        ------- ---------------------------------- -------------------
        --------------------- - ----------- ------------ - -----
      ------
    --
  -
-

------ ------- ----

你可以通过向控制台输出详细的渲染信息来调试 App 组件。当 App 组件中的子组件渲染时,它会显示更多的详细信息以及导致重新渲染的原因:

结论

@welldone-software/why-did-you-render 可以让你更好地了解组件在何时重新渲染,通过优化组件更新,可以提高 React 应用程序的性能。为了满足生产环境的需求,你可以将其添加到你的 CI/CD 流程中,确保只有在开发模式下调试。如果你经常面临不必要的组件渲染问题,@welldone-software/why-did-you-render 是一款值得一试的 npm 包。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/welldone-software-why-did-you-render