Reactjs 如何使用按钮上的graphql useQuery方法进行查询单击或手动执行查询

Reactjs 如何使用按钮上的graphql useQuery方法进行查询单击或手动执行查询,reactjs,graphql,Reactjs,Graphql,在页面加载时,查询工作正常,但我的要求是像单击按钮一样再次查询 const JOB_LIST_QUERY = gql` query detail($userId: Int!) { candidate(id:$userId){ id selected:manageCandidates(status:5){ id interviewType interviewDate } } } ;` const { loading, error, data } = useQ

在页面加载时,查询工作正常,但我的要求是像单击按钮一样再次查询

const JOB_LIST_QUERY = gql`
query detail($userId: Int!) {
candidate(id:$userId){
  id
  selected:manageCandidates(status:5){
    id
    interviewType
    interviewDate
  }
 }
}
;`

const { loading, error, data } = useQuery(JOB_LIST_QUERY, {
variables: {
  userId: Number.parseInt(userId.toString()),
},
onCompleted: data => {
  setSelectedJobList(data.candidate.selected)
},
onError: error => {
  console.log(error.message)
}
});
function Hello() {
  const [loadGreeting, { called, loading, data }] = useLazyQuery(
    GET_GREETING,
    { variables: { language: "english" } }
  );

  if (called && loading) return <p>Loading ...</p>

  if (!called) {
    return <button onClick={() => loadGreeting()}>Load greeting</button>
  }

  return <h1>Hello {data.greeting.message}!</h1>;
}
单击按钮,我想再次执行查询。 是否有任何可能的方法在函数中声明,以便在按钮单击和页面加载时也可以调用该函数。

您可以选择,钩子将返回一个可以手动调用的函数,即在组件加载或单击时

const JOB_LIST_QUERY = gql`
query detail($userId: Int!) {
candidate(id:$userId){
  id
  selected:manageCandidates(status:5){
    id
    interviewType
    interviewDate
  }
 }
}
;`

const { loading, error, data } = useQuery(JOB_LIST_QUERY, {
variables: {
  userId: Number.parseInt(userId.toString()),
},
onCompleted: data => {
  setSelectedJobList(data.candidate.selected)
},
onError: error => {
  console.log(error.message)
}
});
function Hello() {
  const [loadGreeting, { called, loading, data }] = useLazyQuery(
    GET_GREETING,
    { variables: { language: "english" } }
  );

  if (called && loading) return <p>Loading ...</p>

  if (!called) {
    return <button onClick={() => loadGreeting()}>Load greeting</button>
  }

  return <h1>Hello {data.greeting.message}!</h1>;
}
函数Hello(){ const[loadGreeting,{调用,加载,数据}]=useLazyQuery( 得到你的问候, {变量:{语言:“英语”} ); 如果(调用和加载)返回加载

如果(!调用){ return loadGreeting()}>加载问候语 } 返回Hello{data.greeting.message}!; } 您可以在加载组件或单击时,钩子将返回一个您可以手动调用的函数

const JOB_LIST_QUERY = gql`
query detail($userId: Int!) {
candidate(id:$userId){
  id
  selected:manageCandidates(status:5){
    id
    interviewType
    interviewDate
  }
 }
}
;`

const { loading, error, data } = useQuery(JOB_LIST_QUERY, {
variables: {
  userId: Number.parseInt(userId.toString()),
},
onCompleted: data => {
  setSelectedJobList(data.candidate.selected)
},
onError: error => {
  console.log(error.message)
}
});
function Hello() {
  const [loadGreeting, { called, loading, data }] = useLazyQuery(
    GET_GREETING,
    { variables: { language: "english" } }
  );

  if (called && loading) return <p>Loading ...</p>

  if (!called) {
    return <button onClick={() => loadGreeting()}>Load greeting</button>
  }

  return <h1>Hello {data.greeting.message}!</h1>;
}
函数Hello(){ const[loadGreeting,{调用,加载,数据}]=useLazyQuery( 得到你的问候, {变量:{语言:“英语”} ); 如果(调用和加载)返回加载

如果(!调用){ return loadGreeting()}>加载问候语 } 返回Hello{data.greeting.message}!; }
有可能,只需在onClick处理程序中执行查询,但hook
useQuery
可能无法执行该操作(如果它提供类似于
{loading,error,data,updateQuery}的内容,则除外)=useQuery
。您使用的是哪个graphql客户端?有可能,只需在onClick处理程序中执行查询,但hook
useQuery
可能无法执行此操作(如果它提供类似
{loading,error,data,updateQuery}=useQuery
之类的内容,则除外)。您使用的是哪个graphql客户端?