javascript - immutable配合react提升性能?
問(wèn)題描述
直接PureComponent那樣淺比較不就完了嗎;我覺(jué)得極少存在state引用改變而實(shí)際的值不發(fā)生改變
問(wèn)題解答
回答1:我覺(jué)得immutable的好處是不可變,不會(huì)出現(xiàn)在其它地方被意外更改值的情況。還有可以快速比較,不需要一層一層的檢查。
回答2:我覺(jué)得immutable的好處確實(shí)有,不可變、兩對(duì)象比較都能在一定程度上提高性能。但是這種比較適合需要復(fù)雜數(shù)據(jù)結(jié)構(gòu)同時(shí)頻繁數(shù)據(jù)操作。如果對(duì)于一般的場(chǎng)景,只是增加了復(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ù)雜場(chǎng)景,我們會(huì)使用redux,因?yàn)閞edux本身數(shù)據(jù)處理就是不可變,所以immutable也不適用。
回答3:嚴(yán)格說(shuō)起來(lái)immutable轉(zhuǎn)換數(shù)據(jù)還會(huì)帶來(lái)性能損耗。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. docker內(nèi)創(chuàng)建jenkins訪(fǎng)問(wèn)另一個(gè)容器下的服務(wù)器問(wèn)題2. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!3. docker不顯示端口映射呢?4. golang - 用IDE看docker源碼時(shí)的小問(wèn)題5. javascript - 連續(xù)點(diǎn)擊觸發(fā)mouseleave事件6. javascript - 最近用echarts做統(tǒng)計(jì)圖時(shí)遇到兩個(gè)問(wèn)題!!7. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””8. mac里的docker如何命令行開(kāi)啟呢?9. docker容器呢SSH為什么連不通呢?10. 為什么我ping不通我的docker容器呢???

網(wǎng)公網(wǎng)安備