我在我的反应应用程序中使用Immutable js!作为优化的一部分,我尝试在shouldComponentUpdate中使用shallowCompare,当我发现shallowCompare对于未更改的状态和props返回true时!我的道具中有一个路径和模块键,它们是不可变对象(分别是列表和地图!)我不确定我是做错了还是浅比较不支持不可变的js,你能帮我解决吗? / p>
答案 0 :(得分:1)
在大多数情况下,shallowCompare
对不可变对象完全正常。
如果您需要Immutable.is()的特殊支持,可以使用shallowEqualImmutable。它更好地理解不可变集合,因为它认为相同值的列表是相同的。
import React from 'react';
import { shallowEqualImmutable } from 'react-immutable-render-mixin';
class Test extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
return !shallowEqualImmutable(this.props, nextProps) ||
!shallowEqualImmutable(this.state, nextState);
}
render() {
return <div></div>;
}
}