覆盖CRUD_DELETE_SUCCESS reducer以进行非立即删除

时间:2017-07-17 17:14:29

标签: admin-on-rest

现在,admin-on-rest在发出DELETE API调用时会从其本地状态中删除资源。所以它甚至在用GET刷新状态之前就从UI中消失了。这很酷。

但有时删除操作不是立竿见影的。真实世界的例子是AWS - 删除EC2实例需要时间。删除RDS实例需要15分钟。删除云端实例需要更长的时间。

对于我的API的一个子集,我希望DELETE按钮更新本地状态(字段'状态'变为'删除')而不是删除它

查看this commit,所有CRUD_DELETE_SUCCESS会导致资源从列表中删除。

我想我可以实现一个自定义动作和按钮(可能还有更多的复制意大利面添加确认页面?)但我不确定如何更新本地状态 - 显然这是自动发生的fetch: UPDATE行动?

有没有人对“正确的”权利有任何想法。在admin-on-rest中执行此操作的方法?

2 个答案:

答案 0 :(得分:0)

你可能也需要一个自定义传奇。在其中,使用检查它是否已完成所需的逻辑处理您的自定义删除操作。如果是,请使用预期数据发送CRUD_DELETE_SUCCESS(您必须浏览代码)。

答案 1 :(得分:0)

您可以随时使用AOR进行自定义操作。 DELETING可以是您的组件调度的操作。

您可以指定Reducer在看到DELETING(将记录状态设置为删除)时执行状态更改 https://marmelab.com/admin-on-rest/Actions.html#using-a-custom-reducer

saga可以将您的用户重定向到“保留”页面。

AOR将在删除操作完成时拍摄DELETING_SUCCESS,否则拍摄DELETING_FAILURE。您可以使用它来显示通知,具体取决于通知状态。

你基本上绕过了现有的逻辑处理整个周期。