Open errorrik opened 7 years ago
事实上不用immutable的话react的表现是“未知行为”,因为一个组件是否被走到shouldComponentUpdate
这一阶段是非常“不显而易见”的,比如你的任意一个父组件的shouldComponentUpdate
返回了false
,那么你就没机会判断,比如如果用connect
和redux store连接后store的这个值没有变,你也没机会判断
因此,在组件的state上不使用immutable几乎可以肯定会遇到各种各样的坑,而我以为这边用immutable应该已经是常识,所以没有写进规范中
在immutable已经是常识的前提下,只会在2种情况下不继承PureComponent
:
shallowEqual
更高效的shouldComponentUpdate
实现,这种情况下一定会实现shouldComponentUpdate
所以没关系render
并不是纯函数((state, prop) => vdom
),这种组件事实上和不用immutable是一个道理的,应该避免再综合上面2点,我认为基本上只会在“有自己更高效的shouldComponentUpdate
实现”的情况下才会不继承PureComponent
,也希望仅在这种情况下出现这种继承关系
基于用immutable的假设下,这是没问题的。但是,我发现貌似很多产品线并未immutable,特别是未进行状态管理的产品,就是挨个挨个的component在写,这种我们是否需要在style guide中考虑
有没有能作为参考的项目让我看一眼,我思考下这里怎么做取舍吧
我觉得这个貌似强制不太好?因为如果没有办法很方便的判断是否组件需要更新(比如不是immutable无法===),实现shouldComponentUpdate的成本并不低,而且性能收益也不高,不如不实现?