如何在AJAX完成后重置有状态组件?

时间:2016-06-30 15:35:55

标签: reactjs redux

我有一个有状态组件,可以在显示数据和编辑表单中的相同数据之间切换。保存数据会触发一个动作REQUEST_UPDATE,它通过AJAX调用API,并在更新成功时调度RECEIVE_UPDATE(使用redux-thunk)。

成功保存后,我希望有状态组件将其editing状态更改回false,使表单消失。

一个想法是重置editing中的componentWillReceiveProps状态,比较通过道具传递的数据。这看起来有点笨拙,因为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" }

1 个答案:

答案 0 :(得分:4)

这种常见模式是让REQUEST_UPDATE在redux商店中设置一个值,例如isUpdating: true。然后RECEIVE_UPDATE将其设置为false。然后,您的有状态组件可以连接到isUpdating道具,并在更改时收到它。