我们知道可以通过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]);
}
网友评论