graphql - 在 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 资源管理器在那里没有显示任何其他内容:
解决方案
有一个关于此的开放错误。该修复程序已合并,但是,在撰写本文时,它仅添加到 alpha 版本中,因此使用风险自负。
要使用 npm 安装最新的 alpha 版本gatsby-source-strapi
,请执行:
npm i gatsby-source-strapi@alpha
这会将组件类型添加到strapi_component
GraphQL 中。
或者作为替代方案,您可以尝试gatsby-source-rest-api,它将组件类型暴露在_xcomponent
.
推荐阅读
- python - 仅在数据框中提取最小值
- c# - 如何使用相同的过滤器同时过滤集合及其嵌套集合?
- c# - Application Insight 中的范围日志记录
- python - C++ DLL 中的 Python 对象
- google-api - Google 登录同意页面未针对我的应用程序请求的所有范围请求许可
- c++ - Windows 控制台调整大小被忽略 - 屏幕缓冲区搞砸了
- python - for循环中某些值的条件(Python pandas)
- java - 发布密钥无法与已部署的应用程序一起使用
- javascript - 访问 localstorage 中的 `access_token` 属性
- sql-server - 按日期查找 SQL Server 查询?