【问题标题】:Returning Apollo useQuery result from inside a function in Vue 3 composition api从 Vue 3 组合 API 中的函数内部返回 Apollo useQuery 结果
【发布时间】:2021-11-05 13:34:02
【问题描述】:

我在寻找一种使用 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 以便能够在模板中访问它?(我不想复制值)

【问题讨论】:

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


    【解决方案1】:

    您可以将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

    【讨论】:

    • 非常感谢。
    猜你喜欢
    • 2021-06-23
    • 2022-07-19
    • 2020-11-08
    • 2021-01-14
    • 2020-11-02
    • 2020-03-27
    • 1970-01-01
    • 2021-09-06
    • 2014-12-01
    相关资源
    最近更新 更多