首页 > 解决方案 > 在 GraphQL 中获取动态区域类型

问题描述

我将 Strapi 设置为前端的无头 CMS 和 Gatsby。在 Strapi 中,我设置了一个带有动态区域的“单一”类型,用户可以使用它来插入各种组件。

当直接从 Strapi GraphQL 查询时,我可以得到组件类型,如下所示:

{
  inicio {
    componentes {
      __typename
    }
  }
}

返回:

{
  "data": {
    "inicio": {
      "componentes": [
        {
          "__typename": "ComponentPaginasCitaBiblica"
        },
        {
          "__typename": "ComponentPaginasAlerta"
        },
        {
          "__typename": "ComponentPaginasTexto"
        }
      ]
    }
  }
}

但是在盖茨比中,我得到了不同的结果:

query MyQuery {
  strapiInicio {
    componentes {
      __typename
    }
  }
}
{
  "data": {
    "strapiInicio": {
      "componentes": [
        {
          "__typename": "StrapiInicioComponentes"
        },
        {
          "__typename": "StrapiInicioComponentes"
        },
        {
          "__typename": "StrapiInicioComponentes"
        }
      ]
    }
  },
  "extensions": {}
}

我需要根据组件类型选择不同的字段并能够在页面上正确显示它们,但是__typename始终设置为StrapiInicioComponentes. 还有其他方法可以从盖茨比那里得到这个吗?

GraphiQL 资源管理器在那里没有显示任何其他内容:

截屏

标签: graphqlgatsbystrapi

解决方案


有一个关于此的开放错误。该修复程序已合并,但是,在撰写本文时,它仅添加到 alpha 版本中,因此使用风险自负。

要使用 npm 安装最新的 alpha 版本gatsby-source-strapi,请执行:

npm i gatsby-source-strapi@alpha

这会将组件类型添加到strapi_componentGraphQL 中。

或者作为替代方案,您可以尝试gatsby-source-rest-api,它将组件类型暴露在_xcomponent.


推荐阅读