如何在我的 vue 模板脚本中有条件地调用 apollo 客户端?

Posted

技术标签:

【中文标题】如何在我的 vue 模板脚本中有条件地调用 apollo 客户端?【英文标题】:How can I call apollo client conditionally in my vue template script? 【发布时间】:2020-01-28 03:08:32 【问题描述】:

我在我的脚本标签中的模板文件中向 apollo 客户端传递了一个查询,但我不想每次都这样做。相反,我想在道具中传递一个布尔值,然后根据该布尔值运行(或不运行)查询。

<template>
...
</template>

<script>
  import 
    MY_QUERY
   from 'util/queries';

  props: 
    productId: 
      type: String,
      default: '',
    ,
    suppressGraphQlQuery: 
      type: boolean,
      default: false,
    
  ,

  data() 
    return 
      relatedProducts: [],
      loading: 0,
      preloading: true,
    ;
  ,

  apollo: 
    relatedProducts: 
      query: MY_QUERY,
      variables() 
        return 
          id: this.productId,
        ;
      ,
    ,
  ,

</script>

我希望能够利用 suppressGraphQlQuery 属性不调用 apollo 客户端,但不知道该怎么做。当我的 prop === true 时,是否可以不运行查询? 提前谢谢你。

【问题讨论】:

【参考方案1】:

你可以skip这样的查询:

export default 
  props: 
    skipQuery: 
      type: Boolean,
      default: false,
    ,
  ,
  apollo: 
    relatedProducts: 
      query: MY_QUERY,
      variables() 
        return 
          id: this.productId,
        ;
      ,
      skip() 
        return this.skipQuery;
      ,
    ,
  ,
;

【讨论】:

以上是关于如何在我的 vue 模板脚本中有条件地调用 apollo 客户端?的主要内容,如果未能解决你的问题,请参考以下文章

在 Vue.js 中有条件地定位具有 CSS 样式的类

如何:在 Azure DevOps YAML 中有条件地插入模板?

试图让 vue.js 根据 created() 中的方法有条件地渲染某些东西

在脚本中调用 axios 后,Vue 数据未定义

如何将全局变量调用到 vue 组件中?

如何在 Vue 中有条件地添加一个类?