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!