当前位置: 首页 > 知识库问答 >
问题:

如何在vue.js中使用union上的片段?

范承教
2023-03-14

有没有人知道我怎么在工会上使用碎片?我已经看到了React的文档(https://www.apollographql.com/docs/React/advanced/fragments/#fragment-on-unions-and-interfaces),但对Vue的介绍不多。我有一个返回两个片段的查询,都带有__TypeName。

query {
    search(queryString: "lin") {
        ... on Professor {
            __typename
            name
        }
        ... on Course { 
            __typename
            name
            moduleCode
        }
    }
}

当vue应用程序运行时,我收到一个错误:“您正在查询中使用片段,但要么在Apollo客户端中没有设置addTypeName:true选项,要么您正在尝试向存储中写入一个片段,但没有__TypeName。”这是我的vue应用程序的代码。

data() {
    return {
        result: []
    };
},
apollo: {
    // Query with parameters
    result: {
        // gql query
            query: gql'
                query search($queryString: String!) {
                    ... on Professor {
                        __typename
                        name
                    }
                    ... on Course { 
                        __typename
                        name
                        moduleCode
                    }
                }
            ',
            // Static parameters
            variables() {
               return {
                  queryString: 'lin mei'
                }
          }
    }
},
// In my apollo client options
// Override default cache
cache: new InMemoryCache(
    { addTypename: true }
}

我得到的错误消息是

  • 您正在查询中使用片段,但在Apollo客户端中没有设置addTypeName:true选项,或者您正在尝试向存储中写入一个没有__TypeName的片段。请打开addTypename选项,并在写入片段时包含__TypeName,以便Apollo客户端能够准确匹配片段。
  • 弃用警告:使用不带__TypeName的片段是不支持的行为,将在Apollo客户端的未来版本中删除。您现在应该修复此问题并将addTypename设置为true。
  • GraphQL错误:Professor上的片段不能在查询内部传播;GraphQL错误:过程中的片段不能在查询中传播;GraphQL错误:搜索声明了变量$QueryString,但未使用
  • GraphQL错误:Professor上的片段不能在查询内部传播;GraphQL错误:过程中的片段不能在查询中传播;GraphQL错误:搜索声明了变量$QueryString,但未使用

有人能提供一个从VUE中的查询中抓取两个片段的例子吗?

共有1个答案

贡英华
2023-03-14

您的查询不正确。您将操作命名为search,但您可能是想在根类型上查询该字段。类似于:

query ($queryString: String!) {
  search(queryString: $queryString) {
    ... on Professor {
      __typename
      name
    }
    ... on Course { 
      __typename
      name
      moduleCode
    }
  }
}

注意:因为我不知道您的模式,所以我也不能肯定上面的查询是有效的。如果您要查询的服务器公开了GraphiQL或GraphQL Playground接口,您应该使用它来验证您的查询,因为这两个工具都使用模式特定的语法高亮显示。

您可能希望为每个片段添加id_id字段,以确保正确的缓存行为。如果这两个字段都不存在,则需要提供自定义的DataidFromObject函数。有关更多细节,请参阅文档。

 类似资料:
  • 问题内容: 因此,我在这里已经读到,在Vue.js中,可以使用或在选择器中创建适用于子组件内部元素的样式规则。但是,无论是在SCSS还是普通的旧CSS中,尝试以我的样式使用它均无效。而是将它们原样发送到浏览器,因此无效。例如: home.vue: 生成的CSS: 我想要的是: 我与之相关的webpack配置如下所示: 所以我的问题是,如何让该操作员工作? 我已经找到了这个答案,但我确实在这样做,而

  • 问题内容: 我正在为正在构建的项目使用pygame和python,并且在游戏首次打开时正在构建启动屏幕。我有一个要显示在初始屏幕上的.png文件,并决定将其从黑色淡入淡出。我发现做到这一点的最佳方法是通过将图像设置为Alpha设置。我编写了这段代码,但是它运行得非常慢(程序挂起30秒),并且没有给出Alpha值。仅在屏幕上显示图片。我究竟做错了什么? 问题答案: 您可能遇到的另一个问题(除了猴子说

  • 本文向大家介绍如何在Vue.JS中使用图标组件,包括了如何在Vue.JS中使用图标组件的使用技巧和注意事项,需要的朋友参考一下 原文链接:https://gist.github.com/Justineo/fb2ebe773009df80e80d625132350e30 本文对原文进行一次翻译,并从React开发者的角度简单地做了一些解读。 此文不包含字体图标和SVG sprite。仅在此讨论允许用

  • HomeFragment.java fragment_home 我看了其他问题。但我的应用程序不起作用。所以我想知道我是否需要修理我的主activity。所以我附上了主activity。 mainactivity.java 对不起,我英语不好。所以在翻译的帮助下...我第一次问了stackoverflow。 我在为韩国人做一个应用程序。但我在碎片上有些问题。 如果输入了webview,App将被关

  • 问题内容: 如何在Doctrine 2.0中编写此SQL查询(并获取结果)? 问题答案: 好吧,我发现也许是最好的解决方案: 然后是两个类( NotificationGroup 和 NotificationEvent ),它们扩展了 Notification :

  • 本文向大家介绍如何在 Vue.js 中使用第三方js库,包括了如何在 Vue.js 中使用第三方js库的使用技巧和注意事项,需要的朋友参考一下 在诸多 Vue.js 应用中, Lodash, Moment, Axios, Async等都是一些非常有用的 JavaScript 库. 但随着项目越来越复杂, 可能会采取组件化和模块化的方式来组织代码, 还可能要使应用支持不同环境下的服务端渲染. 除非你