gpt4 book ai didi

reactjs - 使用 TypeScript react Apollo useQuery 钩子(Hook)

转载 作者:行者123 更新时间:2023-12-03 23:34:21 26 4
gpt4 key购买 nike

我正在尝试获取 useQuery钩子(Hook)与 TypeScript 一起工作。
这是我的查询

export const FETCH_LINKS = gql`
query FetchLinks {
feed {
links {
id
createdAt
url
description
}
}
}
`;
我使用 graphql-codegen 从 GraphQL 模式生成类型
export type Feed = {
__typename?: 'Feed';
links: Array<Link>;
count: Scalars['Int'];
};

export type Link = {
__typename?: 'Link';
id: Scalars['ID'];
createdAt: Scalars['DateTime'];
description: Scalars['String'];
url: Scalars['String'];
postedBy?: Maybe<User>;
votes: Array<Vote>;
};

在我的组件中,我将类型应用于 useQuery
const { data, loading, error } = useQuery<Feed>(FETCH_LINKS);
问题是在 data变量我收到以下形状的对象:
{
feed: {
__typename
links
count
}
}
因此,为了遍历链接数组并将它们呈现在页面上,我需要执行 data.feed.links.map()但是 Feed类型没有 feed属性,因此,我收到一条错误消息 Property 'feed' does not exist on type 'Feed'我该如何纠正这种不一致

最佳答案

您应该使用 typescript-operations除了 typescript 的插件插入。这样,您不仅会为架构中的 GraphQL 类型生成 TS 类型,还会根据您在客户端使用的实际查询生成类型。然后可以将这些附加类型直接插入 Hook 使用的类型变量中。
或者,您也可以使用 typescript-react-apollo插件来为你生成你的钩子(Hook)。
如果您不想使用任何其他插件,则需要自己为查询和变量构建适当的类型:

interface FetchLinksData {
feed: Feed
}

关于reactjs - 使用 TypeScript react Apollo useQuery 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62633904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com