如何解决我该如何进行某种操作以使某些内容发生变异,然后在react-admin中打开另一个屏幕?
我正在为事件管理系统构建前端。一种功能“批准”,将为当前事件创建一个新的“工作流”对象,然后在新创建的对象上打开一个编辑视图。
进行使对象变异的操作非常容易(在本例中为创建新的工作流对象),但是我不清楚如何做到这一点,以便用户实际上正在查看该新创建的对象。
这是到目前为止我得到的:
const WorkflowButton = ({ data,label,...props }) => {
const icon = props.icon;
const current_state = data && data.workflow && data.workflow && data.workflow.workflow_state
const valid_states = props.valid_states || []
const current_state_is_valid = valid_states.includes(current_state)
const payload = {
data: {
communication_id: data && data.id,workflow_state: props.workflow_state,data:"{}",author:get_current_user()
}
}
const refresh_function = useRefresh()
const [mutate_the_thing,{ loading }] =
useMutation({
type: 'create',resource: 'workflows',payload: payload,});
const mutate_and_refresh = ()=>{
mutate_the_thing();
refresh_function();
}
const disabled = loading || (! current_state_is_valid)
return <Button label={label} onClick={mutate_and_refresh} disabled={disabled} icon={icon}/>;
};
实际上,我不想跳到当前视图,而是想跳到一个全新的视图,该视图对应于刚插入的对象。那我该怎么办呢?
解决方法
使用redirect(),文档中有一个示例: https://marmelab.com/react-admin/Actions.html#handling-side-effects-in-other-hooks
import * as React from "react";
import { useMutation,useNotify,useRedirect,Button } from 'react-admin';
const ApproveButton = ({ record }) => {
const notify = useNotify();
const redirect = useRedirect();
const [approve,{ loading }] = useMutation(
{
type: 'update',resource: 'comments',payload: { id: record.id,data: { isApproved: true } },},{
onSuccess: ({ data }) => {
redirect('/comments');
notify('Comment approved');
},onFailure: (error) => notify(`Comment approval error: ${error.message}`,'warning'),}
);
return <Button label="Approve" onClick={approve} disabled={loading} />;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。