You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Query实现用户角色更新功能遇报错,请求协助排查

问题排查与修复方案

根据你提供的代码和报错情况,核心问题在于React Query Mutation的调用方式错误,同时存在表单字段名不匹配的问题,以下是具体修复步骤:

1. 修复React Query Mutation的调用方式

useUserUpdate返回的是React Query的mutation实例,不能直接调用userUpdate(sample)触发请求,需要调用实例上的mutate方法。

首先在组件中正确解构mutation:

// 组件内获取mutation,将mutate重命名为userUpdate
const { mutate: userUpdate } = useUserUpdate();

然后修正提交函数:

const onSubmit = (sample) => {
  // 必须确保sample包含用户id(接口需要/user/${data.id}),如果表单未收集id,需要从现有用户数据中传入
  const submitData = { ...sample, id: 当前用户ID }; // 替换成实际的用户ID变量
  userUpdate(submitData);
};

2. 修复表单字段与校验提示的匹配问题

你的AutoComplete组件name属性是roleId,但错误提示用的是errors?.role?.message,字段名不匹配导致校验提示失效,同时可能导致提交数据的字段名不符合后端要求:

修改TextField的错误提示部分,保持与name一致:

<TextField
  name={"roleId"}
  {...params}
  label="Role"
  helperText={errors?.roleId?.message}
  error={Boolean(errors?.roleId)}
  sx={{ mb: 2 }}
/>

如果后端接口接收的字段名是role而非roleId,则需要将AutoComplete的name改为role,同时调整错误提示字段。

3. 额外注意事项

  • 确保组件中已正确初始化react-hook-form的useForm,并解构出control、handleSubmit、errors:
    const { control, handleSubmit, formState: { errors } } = useForm();
    
  • 确认currentUserId存在且正确,否则接口请求会因缺少ID而报错。

内容的提问来源于stack exchange,提问作者Zero 0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:30:21