我已经读过这个问题很多次了,每次建议的答案都是不要使用深度比较,因为它代价很高。我已经尝试在我的应用程序中实现了这一点,它看起来确实非常快。
shouldComponentUpdate = (nextProps, nextState) => {
let a = +new Date();
let equalProps = _.isEqual(this.props, nextProps);
let equalState = _.isEqual(this.state, nextState);
let b = +new Date();
console.log("----> deep equality navbar took ", b - a, " result = ", equalProps && equalState);
if (equalProps && equalState) return false;
return true;
};
下面是生成的日志示例:
----> deep equality msg list took 0 result = false
----> deep equality msg list took 0 result = false
----> deep equality navbar took 0 result = true
----> deep equality sidebar took 0 result = true
----> deep equality msg list took 1 result = false
基本上,它似乎永远不会超过1毫秒,我正在处理一些6/7级别的嵌套对象。消息列表的渲染通常需要70ms以上。我可以通过不到1ms的函数调用来轻松避免。
我是不是错过了什么重要的东西?这似乎是好的,几乎是真的。烘焙我:)
https://stackoverflow.com/questions/52949795
复制相似问题