Gatsby 页面查询 returns 未定义

Gatsby page query returns undefined

我有一个 Gatsby 页面组件并尝试从 GraphCMS 查询一些数据。我在文件夹中添加了页面组件:

/work
/work/index.ts
/work/Work.tsx

Work.tsx:

import React from 'react';

import { Link, graphql } from 'gatsby';

import SEO from 'components/seo';
import { InspirationQueryQuery } from 'graphqlTypes';
import Layout from 'shared/Layout';

const Work = ({ allGraphCmsProject }: InspirationQueryQuery) => {
  console.log(allGraphCmsProject);
  return (
    <Layout>
      <SEO title="Work" />
      <h1>Hi from the work page</h1>
      <p>Welcome to page 2</p>
      <Link to="/">Go back to the homepage</Link>
    </Layout>
  );
};

export default Work;

export const query = graphql`
  query InspirationQuery {
    allGraphCmsProject {
      nodes {
        id
        name
      }
    }
  }
`;

我还使用 graphql code generator 为我的 graphql 查询生成类型。为什么allGraphCmsProject return未定义?

以及如何 return 只是 data 对象?

你的 allGraphCmsProject 信息是 inside props.data.allGraphCmsProject 所以结果结构应该是:

import React from 'react';

import { Link, graphql } from 'gatsby';

import SEO from 'components/seo';
import { InspirationQueryQuery } from 'graphqlTypes';
import Layout from 'shared/Layout';

const Work = ({ data: {allGraphCmsProject} }: InspirationQueryQuery) => {
  console.log(allGraphCmsProject);
  return (
    <Layout>
      <SEO title="Work" />
      <h1>Hi from the work page</h1>
      <p>Welcome to page 2</p>
      <Link to="/">Go back to the homepage</Link>
    </Layout>
  );
};

export default Work;

export const query = graphql`
  query InspirationQuery {
    allGraphCmsProject {
      nodes {
        id
        name
      }
    }
  }
`;

或者:

import { PageProps } from "gatsby"

const Work = (props: PageProps) => {
  console.log(props.data.allGraphCmsProject);
  ... // rest of the code