为什么useQuery不能直接通过页面点击事件发起啊!
使用useQuery.refetch可以避免第一个问题,但是为什么初始化useQuery的时候一定要发起请求啊!
想要初始化一个useQuery,但是同时不发起请求,同时使得refetch可以在页面点击事件时发起的请求是本接口的第一次请求
这种需求很少见吗???
然后翻遍全网,有useQuery的options.enabled,初始化的时候是false,用的时候改成true。别人行为什么我的代码不行啊!!
然后看到有人说用useLazyQuery,虽然不会再初始化的时候发起了,但是在页面首次点击的时候会调用两次!!
为什么!到底是哪里出了问题!
//server.js
import {useLazyQuery } from "@vue/apollo-composable";
import gql from "graphql-tag";
export const getDeptUsersLazey = (clientId, variables) => {
let { load, refetch, result, loading } = useLazyQuery(
gql `query users($filter: Filter) {
users(filter: $filter) {
username
email
phone}
}
`,
variables, {
fetchPolicy: "no-cache",
errorPolicy: 'all',
clientId,
}
);
return { resultdata: result, refetch, load, loading }
};
<template>
<a-button @click="toload">调用一次</a-button>
</template>
<script setup>
import {getDeptUsersLazeyr} from '@/assets/server/server.js'
const toload=()=>{
if(changedeptresult.refetch){
changedeptresult.refetch()
}
};
let changedeptresult = reactive('');
const goGetusers=async ()=>{
changedeptresult = getDeptUsersLazey('iamClient');
await changedeptresult.load();
};
goGetusers()
</script >
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。