Shallow比较不使用不可变的js

时间:2016-10-22 04:45:58

标签: javascript reactjs

我在我的反应应用程序中使用Immutable js!作为优化的一部分,我尝试在shouldComponentUpdate中使用shallowCompare,当我发现shallowCompare对于未更改的状态和props返回true时!我的道具中有一个路径和模块键,它们是不可变对象(分别是列表和地图!)我不确定我是做错了还是浅比较不支持不可变的js,你能帮我解决吗? / p>

1 个答案:

答案 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>;
  }
}