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

React Query:如何在数据加载完成时触发Toast提示?

解决React Query返回数据后才显示Toast的问题

你的问题出在当前代码仅监听isSuccess状态,但未确保数据实际可用(或缺少必要的更新判断逻辑),导致Toast弹出时没有有效内容。可以按以下方式修改:

修改后的代码

function useAppNeedsAnUpdate() {
  const versionControl = useVersionControlQuery();

  useEffect(() => {
    // 确保请求成功、数据存在,且确实需要更新时再弹出Toast
    if (versionControl.isSuccess && versionControl.data) {
      // 可选:添加版本对比逻辑,判断当前应用是否需要更新
      // 示例:假设接口返回版本字段为version,当前版本是normalisedAppVersion
      // const needUpdate = normalisedAppVersion < versionControl.data.version;
      // if (needUpdate) {
        Toast.show({
          text1: versionControl.data.header,
          text2: versionControl.data.body,
          type: 'appUpdate',
          autoHide: false,
          props: {
            link: versionControl.data.storeLink,
          },
        });
      // }
    }
  }, [versionControl.isSuccess, versionControl.data]);
}

export default useAppNeedsAnUpdate;

关键修改说明

  • 补充依赖项:将versionControl.data加入useEffect的依赖数组,确保只有当数据实际更新时才触发逻辑,避免isSuccess重复触发导致的无效Toast。
  • 显式校验数据:虽然React Query的isSuccess状态意味着data已就绪,但显式判断versionControl.data可以规避后端返回空数据的极端情况。
  • 版本对比逻辑(推荐添加):如果接口返回了版本号,增加版本对比判断,只有当当前应用版本低于服务器版本时才弹出更新提示,避免每次请求成功都显示Toast。

另外,请确认getVersionControl请求函数确实返回了包含header、body、storeLink的有效数据,否则即使请求成功,Toast仍会显示空内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:53:13