react-pureRender原理

2019-11-09  本文已影响0人  木中木

我们知道可以通过shouldComponentUpdate来实现性能优化,让当前props和state做对比,进行浅比较,在理想情况下,我们可以通过深比较来处理,但是这种比较太昂贵了。

        shouldComponentUpdate(nextProps, nextState) {
            return isDeepStrictEqual(this.props, nextProps) && isDeepStrictEqual(this.state, nextState)
        }

pureRender只是对Object的key进行对比,并没有作值对比

          function shouldEqual (obj, newObj) {
            if (obj === newObj) {
                return true;
            }
            const objKeys = Object.keys(obj);
            const newObjKeys = Object.keys(newObj);

            if (objKeys.length !== newObjKeys.length) {
                return false;
            }
            return objKeys.every((key) => newObjKeys[key] === objKeys[key]);
        }
上一篇下一篇

猜你喜欢

热点阅读