如何解决用数据调用useUpdateMany回调
在阅读文档时,似乎每当导入useUpdateMany
时,我就已经必须传递要发送的数据。我的问题是,是否可以在回调中传递数据?
我想在updateMany
函数中调用handleSubmit
,所以只有在调用该函数时我才能获得数据:
export const ChangeStatus = (props) => {
const { record,version } = props;
const { t } = useTranslation('admin');
const classes = useStyles();
const refresh = useRefresh();
const notify = useNotify();
const [componentStatus,setComponentStatus] = useState(null);
const [updateMany,{ loading,error }] = useUpdateMany('orders',props.selectedIds,{componentStatus });
const defaultSubscription = {
submitting: true,pristine: true,valid: true,invalid: true,};
const handleSubmit = ({ status }) => {
setComponentStatus({ status });
updateMany();
refresh();
};
return (
<Form
initialValues={record}
subscription={defaultSubscription}
key={version}
onSubmit={handleSubmit}
render={(formProps) => (
<form onSubmit={formProps.handleSubmit} className={classes.form}>
<SelectInput
label="Status"
variant="outlined"
source="status"
className={classes.selectField}
FormHelperTextProps={{ className: classes.selectHelperText }}
choices={[
{ id: 'created',name: 'Created' },{ id: 'canceled',name: 'Canceled' },{ id: 'active',name: 'Active' },{ id: 'awaiting',name: 'Awaiting allocation' },{ id: 'processing',name: 'Processing' },{ id: 'review',name: 'Review' },{ id: 'completed',name: 'Completed' },]}
/>
<Button variant="contained" color="secondary" type="submit" disabled={loading}>
{t('Confirm')}
</Button>
</form>
)}
/>
);
};
现在我要先更新一个状态,然后调用updateMany
,但是如果我可以调用updateMany
来传递数据,则要容易得多
const handleSubmit = ({ status }) =>
updateMany({status});
};
有可能做到吗?
谢谢!
解决方法
您可以在调用 updateMany
函数时覆盖参数,但您必须遵守突变参数格式。
在您的示例中,您可以执行 updateMany({ payload: { data: { componentStatus } } });
确实 useUpdateMany
在幕后调用 useMutation
并且这个钩子允许与 callTimeQuery
合并
您可以在这里找到一些参考资料:
https://marmelab.com/react-admin/Actions.html#usemutation-hook
useMutation 接受一个变体调用,其中参数被传递给回调,而不是在调用钩子时。当某些参数仅在调用时已知时,请使用此变体。
还有一个问题是在调用时预见了更合乎逻辑的签名:https://github.com/marmelab/react-admin/issues/6047
(更新:现在合并以用于未来版本:https://github.com/marmelab/react-admin/pull/6168)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。