vue.js - 从 Vue 3 组合 api 中的函数内部返回 Apollo useQuery 结果

标签 vue.js graphql vuejs3 apollo-client vue-composition-api

我在使用 Apollo v4Vue 3 组合 API 寻找一种干净的方法将结果从方法内部返回到我的模板时遇到了一些问题。

这是我的组件:

export default {
    components: {
        AssetCreationForm,
        MainLayout,
        HeaderLinks,
        LoadingButton,
        DialogModal
    },

    setup() {
        const showNewAssetModal = ref(false);

        const onSubmitAsset = (asset) => {
            // how do I access result outside the handler function
            const { result } = useQuery(gql`
                  query getAssets {
                    assets {
                        id
                        name
                        symbol
                        slug
                        logo
                    }
                  }
                `)
            };
        }

        return {
            showNewAssetModal,
            onSubmitAsset,
        }
    },

}

当用户单击页面上的按钮时,将调用 onSubmitAsset

如何从设置函数返回 useQuery result 以便能够在模板中访问它?(我不想复制该值)

最佳答案

您可以移动 useQuery()在提交方法之外,如 shown in the docs 。如果您想推迟查询获取直到调用提交方法,您可以通过传递 enabled:false 来禁用自动启动。作为选项( useQuery 的第三个参数):

export default {
  setup() {
    const fetchEnabled = ref(false)
    const { result } = useQuery(gql`...`, null, { enabled: fetchEnabled })

    const onSubmitAsset = (asset) => {
      fetchEnabled.value = true
    }

    return { result, onSubmitAsset }
  }
}

demo

关于vue.js - 从 Vue 3 组合 api 中的函数内部返回 Apollo useQuery 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69108791/

相关文章:

ckeditor - 如何在 Vue 3 中从在线构建器导入/使用 ckeditor 5?

api - 从 strapi api 获取组件中图像的响应

php - Vue 组件未显示(Laravel 5.3)

javascript - 如何使用 VueJS 和 ChartJS 更新图表

javascript - 在 vue.js 项目中风格化谷歌地图

mongodb - 如何让 GraphQL 在突变时自动插入当前 UTC?

javascript - ES6 中函数后面的模板文字(反引号)的用途是什么?

javascript - SWR 不从 fetcher 填充数据,卡在加载中

node.js - Vue.js 2 身份验证 JWT

javascript - 在 Vue.js 3 中,为什么我必须在 ref 上使用 value 属性,而不是在响应式上使用?