PureComponent原理

·  阅读 78
PureComponent原理

PureComponent默认在shouldComponentUpdate中对props,state进行浅比较。

function shallowEqual(objA, objB) {  
    if (objectIs(objA, objB)) {   
         return true;  
    }  
    if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {   
         return false;  
    }  
    var keysA = Object.keys(objA);  
    var keysB = Object.keys(objB);  
    if (keysA.length !== keysB.length) {    
        return false; 
     } // Test for A's keys different from B.   
    // hasOwnProperty$2 = Object.prototype.hasOwnProperty.  
    for (var i = 0; i < keysA.length; i++) {    
        if (!hasOwnProperty$2.call(objB, keysA[i]) || !objectIs(objA[keysA[i]], objB[keysA[i]])) {     
             return false;    
        }  
    }  
    return true;
}
复制代码

其中Object.js为

function is(x, y) {  
    return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare;
}
let objectIs = Object.is || is;
复制代码
分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改