【问题标题】:apollo-client: How to insert a fragment in a gql template?apollo-client:如何在 gql 模板中插入片段?
【发布时间】:2018-09-17 19:45:14
【问题描述】:

我有这个片段:

// product-info.js
module.exports = gql`fragment productInfo on Product {
  id
  name
  model
  color
  quantity
}`

我有这个查询:

// get-products.js
const productInfo = require('./fragments/product-info')

module.exports = gql`query getProducts {
  quote @client {
    items { ...productInfo }
  }
}`

这不起作用,因为...productInfo 在这里是一个简单的文字。 即使是字符串插值也不起作用${...productInfo}

【问题讨论】:

  • 您不必将其保留为模块 - .graphql 文件可以从其他 .graphql 文件中导入 framgents - 你最近没有做 homework ;)
  • (-_-) 我看到了,但我只是想看看其他方式(使用 gql 模板)是否可行。我总是喜欢尽可能处理 .js 文件。

标签: javascript graphql apollo-client


【解决方案1】:

您应该在查询后包含字符串,我不知道它是否可以与gql 标签一起使用,这取决于您的捆绑器设置:

module.exports = gql`query getProducts {
  quote @client {
    items { ...productInfo }
  }
}
fragment productInfo on Product {
  id
  name
  model
  color
  quantity
}`

其他选项包含在字符串格式化程序中:

const productInfo = require('./fragments/product-info')

module.exports = gql`query getProducts {
  quote @client {
    items { ...productInfo }
  }
}
${productInfo}`

【讨论】:

  • 好的,第一个解决方案应该可以工作,但我的意思是在查询之间共享片段,第二个解决方案,如果工作,会成功。但我最终选择使用 .gql 文件和 graphql-tag/loader 加载程序。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-09-02
  • 2020-01-06
  • 2020-06-07
  • 2019-02-10
  • 1970-01-01
  • 2020-12-06
  • 2020-05-11
  • 1970-01-01
相关资源
最近更新 更多