2016-12-27 92 views
2

我是React native和redux中的新成員。當我使用React native和redux時,我意識到state在還原store導致component呈現很多。反應原生 - redux狀態導致性能問題

例如,我有一個列表視圖的數據存儲爲一個redux狀態。列表視圖將顯示在屏幕A中。由於某些原因,我將在下一個屏幕中修改列表視圖。通過將數據存儲爲redux狀態,只要下一個屏幕中的列表視圖發生更改,屏幕A中的列表視圖就會自動更新。

不幸的是,每當列表視圖中的數據發生變化時(如果我將數據置於組件狀態,只有列表視圖將被重新渲染而不是所有組件),我必須重新渲染屏幕A中的每個組件。

我可以存儲列表視圖的數據在redux狀態,只是重新渲染它(不是所有組件)?

如果您有任何建議,請讓我知道。

預先感謝您!

+0

你有一些代碼可以顯示嗎? – Dherik

+1

@Dherik:謝謝你考慮我的問題。我將編寫一個簡單的代碼並儘快編輯問題。 – LuongTruong

+1

@Dherik:Kuby的答案很棒。我現在可以解決我的問題。謝謝你們。 – LuongTruong

回答

3

好吧,如果你已經連接的狀態將屬性與mapStateToProps,那麼只要您更改reducer的數據,這些props改變過,這將導致重新調用render()方法,所以basicly重新渲染。

state中的每個連接的props都會導致組件的重新渲染,如果它們在reducers store中更改。

對於你的情況,問題應該在別的地方,也許在導航器中,在從A導航到B後仍然將組件A留在背景中?

要回答你的問題,你可以存儲在redux您的ListView數據(一些JSON列表),而且比connect它與您的組件,而是儘量讓另一個組件的Component A裏面,像Component A_2mapStateToProps連接此。那麼如果你改變了數據,只有Component A_2將被重新渲染,而不是整個Component A

+0

請更正此答案的英文。還可以使用''使變量看起來像'this'。嘗試添加一些格式以使答案更具可讀性 – martianwars

+0

這是我能做的最好的英語,對不起。我編輯了亮點,現在好點了嗎? – kuby

+0

好多了,upvoted :) – martianwars