我试图弄清楚反应生命周期方法shouldComponentUpdate
的最惯用的实现。我觉得我和其他人可能没有使用这种方法,因为它是可选的。
通常我想检查对象的props
或state
是否在更新之间发生了变化。
这不起作用,因为此等式指向对象引用:
shouldComponentUpdate(nextProps, nextState) {
return this.props !== nextProps;
}
那么我们就去了对象克隆的兔子洞,这似乎是一个丑陋的解决方案:
return JSON.parse(JSON.stringify(this.props) !== JSON.parse(JSON.stringify(nextProps));
// lodash cloning method
return _.cloneDeep(this.props) !== _.cloneDeep(nextProps);
另一种可能性是使用像immutablejs这样的不可变库,但这是另一个我不确定要添加到项目中的依赖项,还有另一个要学习的API。
我错过了什么吗?对此有更简洁的方法吗?