鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ reactjs在使用redux的時(shí)候,子組件觸發(fā)action,父組件也會(huì)更新?

reactjs在使用redux的時(shí)候,子組件觸發(fā)action,父組件也會(huì)更新?

例如 在A組件下面有一個(gè)B組件,當(dāng)我在B組件 dispatch一個(gè)action的時(shí)候,state發(fā)生改變,結(jié)果A組件更新,然后B組件更新。這樣正常么?能不能只更新B組件,而父組件不更新?

第二A組件 對(duì)應(yīng)reduer 是A.js C組件對(duì)應(yīng)C.js,A C 同級(jí),但是 當(dāng)在 B組件dispatch action的時(shí)候A C里面的reducer都會(huì)觸發(fā)一次,

回答
編輯回答
終相守

1.可以只更新B組件,將B組件需要的 state 和B組件 connect,觸發(fā) action 后就只會(huì)觸發(fā)對(duì)應(yīng)綁定的B組件;如果A和B組件有相同 state 而只想更新B,要么對(duì)A和B都 connect,然后再對(duì)A組件添加 shouldComponentUpdate 進(jìn)行判斷,要么還是 connect A組件,只要組件嵌套不會(huì)太多,性能不會(huì)影響很多。

2.action調(diào)用后,按照 redux 的思想,state 必須是全新的,所以 store 必須調(diào)用每一個(gè) reducer 來獲取新的state值來組成新的 state 對(duì)象,所以這很正常;而且,action 相關(guān)的數(shù)據(jù)也需要發(fā)送給每一個(gè)reducer,以此保證所有相關(guān)數(shù)據(jù)的正常更新。

2017年1月22日 16:41
編輯回答
誮惜顏

一般不建議使用redux,除非你的工程很大很大,
正常情況,訂閱,發(fā)送的模式足以滿足不存在層級(jí)關(guān)系的組件間的相互溝通

2018年5月5日 02:45
編輯回答
舊顏

可以使用reselect,只有在狀態(tài)發(fā)生變化的時(shí)候才發(fā)生計(jì)算過程.

2017年8月22日 01:46
編輯回答
尐懶貓

所有被connect的組件都會(huì)更新,所以有重復(fù)更新渲染的問題,不過應(yīng)該沒有什么問題的,redux就這樣的,dispatch action的時(shí)候,所有的reducers都會(huì)執(zhí)行。而父組件不更新,使用setState?使用mobx?

2017年12月25日 02:38