我有一个有状态组件,可以在显示数据和编辑表单中的相同数据之间切换。保存数据会触发一个动作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" }
答案 0 :(得分:4)
这种常见模式是让REQUEST_UPDATE
在redux商店中设置一个值,例如isUpdating: true
。然后RECEIVE_UPDATE
将其设置为false。然后,您的有状态组件可以连接到isUpdating
道具,并在更改时收到它。