npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-deep-equal

v1.1.3

Published

improve your react's app's performance

Downloads

8

Readme

React 性能损失: 在react当中父组件的重新渲染会带动子组件的重新渲染,当子组件不需要重新调用render方法时。

子组件的重新渲染会造成一部分的性能损失。因为react首先要生成虚拟dom,然后做对比,再决定是否操作dom。

为什么要使用react-deep-equal(why react deep equal): 在react中有PureComponent,它实现了shouldComponentUpdate,它底层使用的是shallowEqual这个函数,它源码实现起来非常的简单,同级别比较,并且对引用类型值是无效的。

比如:

{list:[]}

对于这种是无效的。特别是在子组件的state需要大量渲染列表或者嵌套层级比较深的情况下。

为解决性能问题,我提供了一个通用的折中的函数,将子组件的受的影响部分性能降到一个可以接受的程度。

用法(usage):

npm install react-deep-equal --save

导入(import):

import deepEqual from "react-deep-equal";
..
shouldComponentUpdate(nextProps,nextState){
    return !deepEqual(this.props,nextProps,true)||!deepEqual(this.state,nextState,true);
}

参数详解(parameter detail): /** *@param(Objone) pure object *@param(ObjTwo) pure object *@param(ignoreObjKeyTurn)如果为true则忽视对象key的顺序,如果为false则考虑对象key顺序,如果是未定义的取默认值true。 **/

deepEqual(objone,objtwo,ignoreObjKeyTurn)

//tips:no function->function is ok now