当我尝试破坏React查询的数据时,我将获得属性'在类型上不存在' void;

发布于 2025-02-06 18:14:54 字数 704 浏览 2 评论 0原文

当我尝试像以下方式破坏数据时,我会面临React查询的问题,const {data:getallChannerSettingTypes} = usegetAllChannerSettingTypes();我是gettin此错误property'data'不存在在类型的“ void”

,也许返回Userqueries存在问题

const useGetAllChannelSettingTypes = () => {
  const {data: defaultSettingTypes} = useQuery(SETTING_TYPES, () =>
    Api.user.getSettingTypes(),
  );
  const userQueries = useQueries(
    defaultSettingTypes.map((type: any) => {
      return {
        queryKey: ['SETTING_VALUE', type.channelSettingTypeId],
        queryFn: () => Api.user.getSettingValues(type.channelSettingTypeId),
      };
    }),
  );
  console.log(userQueries);
  return userQueries;
};

I am facing issue with react query when I try to destructing the data like this way const {data: getAllChannelSettingTypes} = useGetAllChannelSettingTypes(); I am gettin this error Property 'data' does not exist on type 'void'

Maybe there is a problem with returning the userQueries

const useGetAllChannelSettingTypes = () => {
  const {data: defaultSettingTypes} = useQuery(SETTING_TYPES, () =>
    Api.user.getSettingTypes(),
  );
  const userQueries = useQueries(
    defaultSettingTypes.map((type: any) => {
      return {
        queryKey: ['SETTING_VALUE', type.channelSettingTypeId],
        queryFn: () => Api.user.getSettingValues(type.channelSettingTypeId),
      };
    }),
  );
  console.log(userQueries);
  return userQueries;
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹苦笑 2025-02-13 18:14:54

根据 documentation usequerqueries返回一个数组:

usequeries钩返回带有所有查询结果的数组。

阵列中的每个元素都有以下属性:

  • 状态:字符串
  • Isidle:boolean
  • Isloading:boolean
  • issuccess:boolean
  • isError:
  • boolean isloadingingerror:boolean
  • isrefetcherror:boolean
  • data >。
  • dataupdatedat:数字
  • 错误:null | TError
  • errorUpdatedAt: number
  • isStale: boolean
  • isPlaceholderData: boolean
  • isPreviousData: boolean
  • isFetched: boolean
  • isFetchedAfterMount: boolean
  • isFetching: boolean
  • isRefetching: boolean
  • failureCount: number
  • errorUpdateCount: number
  • refetch: (options: { throwOnError: boolean, cancelRefetch: boolean }) =>承诺
  • 删除:()=>无效

,因此尝试在这样的循环中破坏数据:

for(let i = 0; i < userQueries.length; i++){
  const {data: getAllChannelSettingTypes} = useGetAllChannelSettingTypes()
  // do something with that data of the given query
}

如果您只对第一个结果感兴趣,则可以这样做:

const {data: getAllChannelSettingTypes} = useGetAllChannelSettingTypes()[0]
   

According to the documentation useQueries returns an array:

The useQueries hook returns an array with all the query results.

Each element in the array has these properties:

  • status: String
  • isIdle: boolean
  • isLoading: boolean
  • isSuccess: boolean
  • isError: boolean
  • isLoadingError: boolean
  • isRefetchError: boolean
  • data: TData, defaults to undefined.
  • dataUpdatedAt: number
  • error: null | TError
  • errorUpdatedAt: number
  • isStale: boolean
  • isPlaceholderData: boolean
  • isPreviousData: boolean
  • isFetched: boolean
  • isFetchedAfterMount: boolean
  • isFetching: boolean
  • isRefetching: boolean
  • failureCount: number
  • errorUpdateCount: number
  • refetch: (options: { throwOnError: boolean, cancelRefetch: boolean }) => Promise
  • remove: () => void

So try destructing the data in a loop like this:

for(let i = 0; i < userQueries.length; i++){
  const {data: getAllChannelSettingTypes} = useGetAllChannelSettingTypes()
  // do something with that data of the given query
}

If you are only interested in the first result you could do it like this:

const {data: getAllChannelSettingTypes} = useGetAllChannelSettingTypes()[0]
   

兰花执着 2025-02-13 18:14:54

尝试删除参数“数据”

try removing the params "data"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文