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

简介

@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


猜你喜欢

  • npm包@bentley/ui-components使用教程

    介绍 @bentley/ui-components是一个为Bentley开发者打造的React组件包,提供了一系列可重用的UI元素,用于快速构建Web应用程序。这些组件可以用于构建复杂的图形用户界面和...

    4 年前
  • npm 包 @bentley/ui-core 使用教程

    在前端开发中,使用 npm 包是非常常见的。而 @bentley/ui-core 是一个非常优秀的 npm 包,它提供了一些非常方便的组件和工具,用于快速构建 UI 界面和交互操作。

    4 年前
  • npm包 @bentley/presentation-frontend 使用教程

    前言 随着现代Web应用程序及3D建模的普及,前端开发人员需要使用多种工具和框架来构建高质量的用户体验。当涉及到大规模或复杂的项目时,使用基础web技术是不足以满足需求的。

    4 年前
  • npm 包 @types/chai-jest-snapshot 使用教程

    前言 在前端开发中,我们经常使用各种工具和库来简化开发流程和提高效率。其中,npm 是前端开发中最常用的包管理工具之一。而 @types/chai-jest-snapshot 则是一个可以帮助我们进行...

    4 年前
  • NPM 包 @types/deep-assign 使用教程

    在前端开发中,我们经常会使用 JavaScript 的深度复制函数来创建对象或者对像进行合并。而在 TypeScript 中,我们需要引入一个名叫 @types/deep-assign 的 npm 包...

    4 年前
  • npm 包 @bentley/imodeljs-quantity 使用教程

    在前端开发中,我们常常需要进行量值转换、单位换算等操作。而在使用 TypeScript 进行开发时,npm 包 @bentley/imodeljs-quantity 可以为我们提供方便快捷的工具类。

    4 年前
  • npm 包 @bentley/imodeljs-i18n 使用教程

    在前端开发中,国际化是一个非常重要的功能。它可以让我们的网站或应用程序更加友好,不同语言的用户也能够轻松的使用我们的产品。其中,一个非常流行的国际化解决方案是使用 i18n (internationa...

    4 年前
  • npm 包 @bentley/certa 使用教程

    前言 在前端开发过程中,我们经常需要使用各种外部工具来提高我们的开发效率,其中 npm 包是不可或缺的一部分。而今天,我要为大家介绍的是 @bentley/certa 这个 npm 包的使用教程。

    4 年前
  • npm 包 ldclient-js 使用教程

    简介 ldclient-js 是一个基于 JavaScript 的 npm 包,用于进行客户端的功能开关管理,使用户能够更好地控制其应用程序的功能。该 npm 包用于与 LaunchDarkly 的服...

    4 年前
  • npm 包 js-untar 使用教程

    在前端开发中,经常需要对文件进行解压缩操作,而 js-untar 是一个可以在前端执行 tar 解压缩操作的 npm 包。本文将详细介绍如何在前端应用中使用 js-untar 包以及一些实际应用案例。

    4 年前
  • npm 包 @bentley/ui-abstract 使用教程

    简介 @bentley/ui-abstract 是一个基于 TypeScript 和 React 的 npm 包,提供了一些基础的 UI 组件和辅助函数,帮助开发者快速地构建前端应用程序。

    4 年前
  • npm 包 @bentley/perf-tools 使用教程

    概述 @bentley/perf-tools 是一个基于 Node.js 的性能测试工具库。它可以帮助开发者在各种环境下进行测试,提高代码的性能。 本文将介绍如何使用 @bentley/perf-to...

    4 年前
  • npm 包 @bentley/oidc-signin-tool 使用教程

    简介 在通过 OpenID Connect (OIDC) 授权协议进行认证时,前端开发需要实现从认证服务器获取认证令牌的过程,这通常涉及到一些和安全相关的概念,比如加密、数字签名和证书等。

    4 年前
  • npm 包 @bentley/geometry-core 使用教程

    在前端开发中,经常需要进行各种形状的计算,比如计算点、线、面等的位置、长度和面积等。而 @bentley/geometry-core 就是一个非常好用的 JavaScript 几何计算库,它提供了一系...

    4 年前
  • npm 包 @bentley/ecschema-metadata 使用教程

    前言 在前端开发的过程中,我们常常会用到各种npm包,从jquery到react,再到angular等等,这些众多的npm包都大大地简化了我们的开发工作,使我们能够将精力更集中的放在业务逻辑上,而不是...

    4 年前
  • npm 包 @bentley/config-loader 使用教程

    简介 在前端开发中,我们经常需要读取配置文件,例如 API 地址、接口参数等等。但是,不同的项目可能会使用不同的配置文件格式(如 JSON、XML、YAML 等),而这些格式的读取方式也各不相同。

    4 年前
  • npm包@openid/appauth使用教程

    什么是@openid/appauth @openid/appauth是基于OAuth2.0授权的开源JavaScript库,提供了一个简单的方法来将用户认证和授权流程集成到你的应用程序中。

    4 年前
  • npm 包 @bentley/imodeljs-native 使用教程

    #npm 包 @bentley/imodeljs-native 使用教程 ##1.前言 随着前端技术的发展,越来越多的工程师开始接触到前端开发。而自从 webpack 的出现以后,前端的生产流程发生了...

    4 年前
  • npm包merge-json使用教程

    引言 在前端开发中,有时候需要读取多个json文件并合并成一个json对象。在这种情况下,我们可以使用一个npm包——merge-json。merge-json会合并多个json文件并返回一个新的js...

    4 年前
  • NPM包 @bentley/webpack-tools使用教程

    前言 Webpack是一个现代化的JS应用程序打包器。它的主要特点是可以将多个JS、CSS、图片等文件打包在一起,以便在浏览器中使用。而@bentley/webpack-tools则是在Webpack...

    4 年前

相关推荐

    暂无文章