diego3g / rsxp-2023

Repositório contendo o código do app do RS/XP 2023
MIT License
440 stars 84 forks source link

[0012] Configuração do React Query #55

Closed nitoba closed 1 year ago

nitoba commented 1 year ago

Olá galera, irei fazer a configuração do React Query no projeto mobile

nitoba commented 1 year ago

src/services

export async function getUser() {
  const result = await fetch('https://api.github.com/users/diego3g')
  return await result.json()
}

Utilização

const { data } = useQuery([QueryKeys.users], getUser)
pedro-lucaas commented 1 year ago

Dessa forma não temos tipagem no retorno das nossas queries. Acho que já podíamos pensar nisso e montar uma estrutura que aceite isso

pedro-lucaas commented 1 year ago

Eu gosto de utilizar o axios. O que acham? Poderíamos na pasta services criar uma pasta api onde ficariam as configurações comuns a todas as requisições, como base url, algum token caso seja necessásrio e etc. E dentro da pasta api criarmos subpastas com as requisições.

pedro-lucaas commented 1 year ago

Eaí ficaria por exemplo:

import api from "..";
import { endpoints } from "../endpoints";

export async function getUser() {
  const { result } = await api.get<UserType>(endpoints.USERS)
  return result;
}
henriqgoncalvs commented 1 year ago

O que vcs acham de criar custom hooks pra cada requisição? Eu gosto disso pq a gente faz uma boa separação de camadas na aplicação em si.

A ideia é criar algo parecido com isso: https://github.com/hnqg/talentuzz/blob/main/src/features/jobs/api/get-job.ts E usa assim: https://github.com/hnqg/talentuzz/blob/74e92844fd730343094447e593ec5cfaa5e7d237/src/pages/dashboard/jobs/%5BjobId%5D.tsx#L13

E ai vai separando pelos use cases. Não necessariamente precisa deixar o service no mesmo arquivo (apesar de eu gostar tbm pq facilita na manutenção)

pedro-lucaas commented 1 year ago

@hnqg gosto dessa abordagem também. é uma boa! Torna o componente bem mais limpo e livre de coisas relacionadas a api, endpoints e etc

nitoba commented 1 year ago

@pedro-lucaas teriamos sim o retorno da tipagem da forma que vc colocou, mas por enquanto não sabemos se vamos utilizar o axios ou a fetch api. Ao meu ver poderiamos seguir usando o axios pq já tem a questão da tipagem assim como vc colocou passando através dos generics

nitoba commented 1 year ago

posso fazer a implementação do Axios junto do projeto se for do acordo de todos, o que acham @pedro-lucaas e @hnqg ?

henriqgoncalvs commented 1 year ago

Acho legal @nitoba, manda bala!