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

如何将RTK Query请求返回的数据赋值给useState初始化的变量

如何将RTK Query请求返回的数据赋值给useState初始化的变量?

你可以通过两种方式实现将请求返回的数据赋值给useState定义的data变量:

方法一:直接await请求结果并赋值

RTK Query的mutation函数调用后会返回一个Promise,你可以用await结合.unwrap()获取请求成功的数据,直接调用setData完成赋值:

修改你的getData函数即可:

const getData = async() => {
  if (!organization?.name) return;
  try {
    // 调用mutation并通过unwrap获取成功响应数据
    const responseData = await updateCoverage({ 
      organizationName: organization.name, 
      updateCoverageRequest: dashboardFilter 
    }).unwrap();
    // 赋值给useState变量
    setData(responseData);
  } catch (error) {
    // 按需处理请求失败的情况
    console.error('更新Coverage失败:', error);
  }
}

.unwrap()的作用是:请求成功时直接返回响应数据;请求失败时会抛出错误,方便用try/catch捕获处理。

方法二:监听mutation状态变化自动赋值

你已经从useUpdateCoverageMutation解构出了coverageData和isSuccess状态,可通过useEffect监听这些状态的变化,当请求成功时自动赋值:

const { dashboardFilter, organization } = useStateContext();
const [data, setData] = useState<DiligenceDTo[]>();

const [updateCoverage, { data: coverageData, isLoading, isSuccess, isError}] = useUpdateCoverageMutation();

const getData = async() => {
  await updateCoverage({ 
    organizationName: organization?.name, 
    updateCoverageRequest: dashboardFilter 
  });
}

useEffect(() => {
  if (!organization?.name) return;
  getData();
}, [dashboardFilter, organization]);

// 添加这个useEffect监听请求成功状态
useEffect(() => {
  // 当请求成功且有返回数据时,赋值给useState变量
  if (isSuccess && coverageData) {
    setData(coverageData);
  }
}, [isSuccess, coverageData, setData]);

这种方式适合需要根据请求状态(成功/失败)做后续处理的场景,当isSuccess变为true且coverageData存在时,自动更新data变量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:20:08