2017-06-02 74 views
0

這是一個React Native項目,其中包括React Navigation和Redux。 我有兩個場景,第一個包含一個ListView和一個按鈕來添加一個新元素到列表中。這個按鈕導航到一個新的場景,我填寫一個小表格來創建一個新的記錄,它將出現在第一個場景的列表中。React Navigation和Redux:goBack()不會刷新我的道具

當點擊保存按鈕並返回到第一個場景(列表視圖)時,mapStateToProps反映了變化,但沒有其他生命週期方法被調用(componentWillReceiveProps,shouldComponentUpdate等),都沒有。

現在,這兩個場景都使用從redux連接,我將從場景2回到場景1,並使用React Navigation中的goBack()方法。我想知道在顯示一個新視圖時,redux是否會從視圖中「斷開連接」,以及如何將它連接回去?同樣,來自ListView場景的mapStateToProps正在顯示更新的數據,但似乎沒有道具正在被映射。

+0

因爲我的狀態prop似乎使用的是數組,所以在複製操作中的數組時,我得到了一些更改,而不是在同一個操作中進行操作... – fray88

回答

0

如果redux狀態值沒有真正改變,看起來道具不會刷新。修改它之前複製列表數組,然後將其分配給有效載荷似乎解決了這個問題。

+0

您能分享解決方案嗎?我在這裏有同樣的問題https://github.com/react-navigation/react-navigation/issues/3262#issuecomment-364599200 –

+1

@FrancisRodrigues它似乎是爲了捕獲這種變化,你需要分配一個新的數組。在同一個數組上操作時,您只是傳遞數組內存的位置。需要做的是使用數組的複製功能來創建一個新數組,因此,在分配這個新數組時,redux會將它看作是一個值作爲更改。 基本上,在您的「創建元素」視圖中,只需創建列表的新副本,將新元素添加到該新陣列並將其發送到您的縮減器。 – fray88