为什么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 >

image.png


charlotteeeeeee
74 声望7 粉丝