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

如何通过useMutation获取C# API返回的uid?

解决React Query useMutation无法获取API返回的uid问题

你当前的代码里,mutation函数只执行了await fetch(...),而fetch返回的是Response对象,并非解析后的JSON数据,所以data和onSuccess里的res都是未解析的Response,自然拿不到uid。

修正方案

核心是在mutation的异步函数中完成响应体的JSON解析,同时处理响应状态:

function creationTrunk(note) {
    const { isLoading, isSuccess, isError, data, error, mutate } = ReactQuery.useMutation(
        ['createNote'], 
        async () => {
            const res = await fetch(`api/createNote?note=${note}`, { method: 'POST' });
            // 先判断响应是否成功,避免解析错误的响应体
            if (!res.ok) {
                throw new Error('创建请求失败');
            }
            // 解析响应体为JSON,返回后React Query会将其存入data
            return res.json();
        }, 
        {
            onSuccess: (parsedData) => {
                // 这里直接拿到解析后的JSON对象,提取uid
                console.log('返回的uid:', parsedData.uid);
            },
            onError: (err) => {
                console.error('创建出错:', err.message);
            }
        }
    )

    return { isLoading, isSuccess, isError, data, error, mutate }
}

关键说明

  1. mutation函数负责数据解析:React Query的data值由mutation函数的返回值决定,必须在这里完成res.json()解析,而不是在onSuccess里。
  2. 响应状态校验:通过res.ok判断HTTP状态码是否在200-299区间,确保只解析成功的响应,失败时抛出错误触发onError。
  3. 直接访问uid:mutation成功后,data和onSuccess的参数都是解析后的JSON对象,直接通过data.uid或parsedData.uid即可获取返回的uid。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:35:16