首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React,Graphql模式类型声明

React,Graphql模式类型声明
EN

Stack Overflow用户
提问于 2019-11-27 19:06:53
回答 1查看 148关注 0票数 2

我在React和阿波罗中使用graphql :generate来从graphql模式创建类型。

我还使用react阿波罗-钩子useQuery输出数据.

一切似乎都正常,我可以看到输出的数据

我的问题是,我不知道如何声明生成的类型,然后在vc代码中获取intelliSense。

查询

代码语言:javascript
复制
import { gql } from 'apollo-boost';

export const GET_ALL_RECIPES = gql`

  query RecipesData{
    recipe{
      _id
      name
      description
    }
  }
`

生成类型

代码语言:javascript
复制
/* tslint:disable */
/* eslint-disable */
// This file was automatically generated and should not be edited.

// ====================================================
// GraphQL query operation: RecipesData
// ====================================================

export interface RecipesData_recipe {
  __typename: "Recipe";
  _id: string | null;
  name: string | null;
  description: string | null;
}

export interface RecipesData {
  recipe: (RecipesData_recipe | null)[] | null;
}   

App.tsx

代码语言:javascript
复制
import React from 'react';
import './App.css';

import { useQuery } from 'react-apollo-hooks';
import { GET_ALL_RECIPES } from '../queries';

import { RecipesData_recipe } from '../generated/RecipesData';

const App: React.FC<RecipesData> = () => {

  const { data, loading } = useQuery(GET_ALL_RECIPES, {
    suspend: false
  })

  if (loading || !data) return <div>Loading</div>

  return (
    <ul>
      {data.recipe.map((recipe) =>
        <li key={recipe._id}>{recipe.name}</li>
      )}
    </ul>
  );
}

export default App; 

如何正确地将RecipesDataRecipesData_recipe在App.tsx中声明为使用intelliSense for recipe.name

EN

回答 1

Stack Overflow用户

发布于 2022-04-27 12:56:26

文档总是有帮助的。只需导入生成的...Data接口和/或...Vars接口(如果您正在查询),然后使用它来转换useQuery

代码语言:javascript
复制
import { RecipesData } from '../generated/RecipesData';

const { data, loading } = useQuery<RecipesData>(GET_ALL_RECIPES, {
  suspend: false
});

然后简单地以更干净的方式返回组件:

代码语言:javascript
复制
return (
  <div>
    {loading ? (
      <p>Loading ...</p>
    ) : (
      <ul>
        {data && data.recipe.map(recipe => (
          <li key={recipe._id}>{recipe.name}</li>
        ))}
      </ul>
    )}
  </div>
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59076988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档