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ì)于一般的場(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)格說起來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. boot2docker無法啟動(dòng)2. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””3. docker-compose中volumes的問題4. java - SSH框架中寫分頁(yè)時(shí)service層中不能注入分頁(yè)類5. nignx - docker內(nèi)nginx 80端口被占用6. javascript - mock.js可以存儲(chǔ)數(shù)據(jù)嗎7. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.8. dockerfile - 為什么docker容器啟動(dòng)不了?9. docker api 開發(fā)的端口怎么獲取?10. golang - 用IDE看docker源碼時(shí)的小問題

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