javascript - immutable配合react提升性能?
問題描述
直接PureComponent那樣淺比較不就完了嗎;我覺得極少存在state引用改變而實(shí)際的值不發(fā)生改變
問題解答
回答1:我覺得immutable的好處是不可變,不會(huì)出現(xiàn)在其它地方被意外更改值的情況。還有可以快速比較,不需要一層一層的檢查。
回答2:我覺得immutable的好處確實(shí)有,不可變、兩對(duì)象比較都能在一定程度上提高性能。但是這種比較適合需要復(fù)雜數(shù)據(jù)結(jié)構(gòu)同時(shí)頻繁數(shù)據(jù)操作。如果對(duì)于一般的場景,只是增加了復(fù)雜度、文件大小。比如獲取對(duì)象屬性const obj = {a: 1, b: 2, c: 3}
普通方式:
const {a, b, c} = obj;
immutable:
const a = obj.get(’a’);const b = obj.get(’b’);const c = obj.get(’c’);
而且如果是復(fù)雜場景,我們會(huì)使用redux,因?yàn)閞edux本身數(shù)據(jù)處理就是不可變,所以immutable也不適用。
回答3:嚴(yán)格說起來immutable轉(zhuǎn)換數(shù)據(jù)還會(huì)帶來性能損耗。API很方便的可以對(duì)于非常深層數(shù)據(jù)的對(duì)比跟修改操作
reducer.js
[actions.UPDATE_PROJECT_LIST_AFTER_DELETE]: (state, { data }) => { let index = data.index return state.updateIn([’dataList’,index,’status’], () => ’Deleted’)}
相關(guān)文章:
1. 為什么我ping不通我的docker容器呢???2. android - webview 自定義加載進(jìn)度條3. 將SQLServer數(shù)據(jù)同步到MySQL 用什么方法?4. 什么操作會(huì)導(dǎo)致mysql的binlog_size快速變大?5. numpy - python [:,2][:,None]是什么意思6. linux - openSUSE 上,如何使用 QQ?7. javascript - 微信音樂分享8. mysql優(yōu)化 - 如何解決 MySQL 導(dǎo)入約 2G 的 SQL 報(bào)錯(cuò)?9. javascript - vue引入微信jssdk 配置在哪個(gè)生命周期調(diào)取接口配置?10. javascript - 微信小程序限制加載個(gè)數(shù)
