Olá!
Nessa aula foi mostrado como usar a propriedade refetchQueries
em um useMutate
. Dentro dessa propriedade foi passado um array com o nome da query a ser executada:
useMutation(ADICIONAR_ITEM, {
refetchQueries: ['ObterCarrinho']
});
No caso, esse ObterCarrinho
é o nome dado à query dentro do template literals usando o gql
:
export const OBTER_CARRINHO = gql`
query ObterCarrinho{
carrinho {
total
itens {
livroId
quantidade
opcaoCompra {
id
preco
}
livro {
id
imagemCapa
titulo
descricao
autor {
nome
}
}
}
}
}
`
Ou seja, tenho uma variável OBTER_CARRINHO
e dentro dela tenho a query nomeada ObterCarrinho
.
Minha dúvida é: como o useMutate
conhece o nome dessa query ObterCarrinho
? Não consegui entender como o useMutate
tem acesso a esse nome, sendo que é algo que está dentro de uma variável, (a OBTER_CARRINHO
). É alguma coisa interna do GraphQL?
Fiz um teste e ao invés de usar o nome da query, usei a variável e funcionou:
useMutation(ADICIONAR_ITEM, {
refetchQueries: [OBTER_CARRINHO]
});
Por que isso também funciona? Qual é a "melhor prática"?
Obrigado!