Thi*_*man 23 javascript immutability reactjs immutable.js
我已经使用有状态存储以"正常"方式构建了我的第一个React应用程序,现在我正在研究使用Este starterkit中使用的不可变全局状态.
它以几种方式简化了应用程序结构:
我只读了关于在React中使用不可变数据的积极的事情,建议避免组件中的状态,所以我想知道是否有任何缺点.我想一定有,因为否则我不明白为什么它不推荐,因为在构建应用程序做出反应的方式.
不变性对我来说是新的,所以如果我在一个复杂的真实应用程序中开始使用这种方法,我应该注意一些警告吗?
我能想到的唯一一件小事是在Este使用它时使用forceUpdate(),因为我已经读过它是一个同步函数.例如,Morearty似乎将更新推迟到下一个动画帧以便批量处理它们,但我认为这是一个实现细节/优化,而不是一些继承的不可变单态方法的缺点.
haz*_*ous 14
this.state.getIn("[parent, child, index]")在一个组件中做一个,因为它增加了模型更改破坏组件代码的可能性.这可以通过可扩展性(更多关于下面的内容)或通过帮助方法来预防,但是你肯定会失去普通JS成员的简单性.通过道具传递数据的一个优点是,您可以利用shouldComponentUpdate更高效的更新.如果您假设数据始终来自父级(例如通过道具),则可以有效地防止组件树的大部分必须重新渲染.不可变值使得这非常好,因为您可以shouldComponentUpdate在组件层次结构中相对较高地引用相等性检查.
我在React中使用不可变数据时发现的唯一另一个缺点是React开发人员工具不能很好地与它们一起工作(它们向您展示了不可变值的底层数据结构,而不是JS友好的值).
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4545 次  |  
        
|   最近记录:  |