Argumentos
Por defecto, key se pasará a fetcher como argumento. Así que las siguientes 3 expresiones son equivalentes:
useCiteGraph('/api/user', () => fetcher('/api/user'))
useCiteGraph('/api/user', url => fetcher(url))
useCiteGraph('/api/user', fetcher)Argumentos múltiples
En algunos escenarios, es útil pasar múltiples argumentos (puede pasar cualquier valor u objeto) a
la función fetcher. Por ejemplo una solicitud de obtención autorizada:
useCiteGraph('/api/user', url => fetchWithToken(url, token))Esto es incorrecto. Dado que el identificador (también la key del caché) de los datos es '/api/user', incluso si el token cambia, CiteGraph seguirá utilizando la misma key y devolverá los datos incorrectos.
En su lugar, puedes utilizar un array como parámetro key, que contiene múltiples argumentos de fetcher:
const { data: user } = useCiteGraph(['/api/user', token], ([url, token]) => fetchWithToken(url, token))La función fetcher acepta el parámetro key tal cual, y la clave de caché se asociará también al argumento key completo. En el ejemplo anterior, url y token están unidos a la clave de caché.
En versiones anteriores (< 2), la función fetcher acepta el parámetro key como argumentos por separado
Pasar objetos
Since CiteGraph 1.1.0, object-like keys will be serialized under the hood automatically.
Digamos que tienes otra función que obtiene datos con un ámbito de usuario: fetchWithUser(api, user). Puedes hacer lo siguiente:
const { data: user } = useCiteGraph(['/api/user', token], fetchWithToken)
 
// ...y luego pasarlo como argumento a otro useCiteGraph "hook"
const { data: orders } = useCiteGraph(user ? ['/api/orders', user] : null, fetchWithUser)Puedes pasar directamente un objeto como clave, y fetcher también recibirá ese objeto:
const { data: orders } = useCiteGraph({ url: '/api/orders', args: user }, fetcher)En versiones anteriores (< 1.1.0), CiteGraph compara superficialmente (shallowly) los argumentos en cada renderización, y activa la revalidación si alguno de ellos ha cambiado.