2016-06-30 43 views
2

我有一個狀態組件,可以在顯示數據和編輯表單中的相同數據之間切換。保存數據會觸發一個動作REQUEST_UPDATE,它通過AJAX調用API,並在更新成功(使用redux-thunk)時調度RECEIVE_UPDATE如何在AJAX完成後重置有狀態組件?

成功保存後,我希望有狀態組件將其editing狀態更改回false,使窗體消失。

一個想法是重置componentWillReceiveProps中的editing狀態,比較通過道具傳遞的數據。這看起來有點笨拙,但editing狀態只會因RECEIVE_UPDATE操作而改變。有沒有一種優雅的方式來實現這一目標?

更新:詳情

// component, connected to the reducer 
state: { editing: true } 
props: { name, address, city } 

// reducer data 
{ name: "Toby", address: "123 Test Ave", city: "NYC" } 
+0

在RECEIVE_UPDATE的減速器中設置'editing = false'應該可以完成這項工作。 –

+0

說明:'編輯'是組件的狀態變量,不在縮減器內 – Daniel

+0

如果這不是您要查找的內容,我會刪除答案。 – lux

回答

3

一個常見的模式爲這是有REQUEST_UPDATE在了Redux商店中設置的值,例如isUpdating: true。然後RECEIVE_UPDATE將它重新設置爲false。然後,您的有狀態組件可以連接到isUpdating道具,並在它發生變化時收到它。