为了解决此问题,可以使用useRef钩子来存储最新的变量,并在重新获取数据时使用它。以下是示例代码:
import React, { useRef } from 'react'
import { useLazyQuery } from '@apollo/client'
import { GET_DATA } from './queries'
const ExampleComponent = () => {
const [getData, { loading, data }] = useLazyQuery(GET_DATA)
const variablesRef = useRef({})
const handleGetData = (newVariables) => {
variablesRef.current = newVariables // 存储最新的变量
getData({ variables: newVariables })
}
const handleRefetchData = () => {
getData({ variables: variablesRef.current }) // 重新获取数据时使用最新的变量
}
return (
{loading ? Loading...
: {JSON.stringify(data, null, 2)}
}
)
}
export default ExampleComponent