Hook useGetAllUsersList
O hook useGetAllUsersList é responsável por buscar e gerenciar a lista de todos os usuários. Ele utiliza a biblioteca react-query para realizar a consulta de dados de forma assíncrona e eficiente, proporcionando um estado reativo para a interface do usuário.
Função e Utilização
useQuery
: hook do react-query utilizado para realizar a consulta de dados.
Estado e Hooks Utilizados
data: allUsersListData
: dados retornados pela consulta, contendo a lista de todos os usuários.isLoading: usersLoading
: booleano indicando se a consulta está em andamento.error: usersError
: erro retornado pela consulta, se houver.queryKey
: chave única para identificar a consulta na cache do react-query.queryFn
: função de consulta que realiza a requisição para obter os dados dos usuários.
Funções Utilizadas
apiFunction.getUser
: função API para buscar a lista de todos os usuários.
Descrição dos Retornos
- status : Status da operação de consulta, podendo ser 'usersListLoading' ou 'error'.
- message : Mensagem descritiva sobre o status atual da operação.
- users : Lista de usuários retornada pela consulta, ou uma lista vazia se não houver dados.
- usersListLoading : Booleano indicando se a lista de usuários está carregando (false quando os dados já foram carregados).
- usersListError : Booleano indicando se houve um erro na consulta (false quando não há erro).
Estrutura do Código
import { apiFunction } from '@/api/api'
import { useMutation, useQueryClient } from '@tanstack/react-query'
export const CreateNewGroupMutation = () => {
const queryClient = useQueryClient()
import { apiFunction } from '@/api/api'
import { useQuery } from '@tanstack/react-query'
export const useGetAllUsersList = () => {
const {
data: allUsersListData,
isLoading: usersLoading,
error: usersError,
} = useQuery({
queryKey: ['users'],
queryFn: apiFunction.getUser,
})
if (usersLoading)
return { status: 'usersListLoading', message: 'Carregando...' }
if (usersError)
return {
status: 'error',
message: 'Ocorreu um erro ao buscar os usuários da sua lista',
}
const users = allUsersListData ? Object.values(allUsersListData).flat() : []
return {
users,
usersListLoading: false,
usersListError: false,
} const createNewGroupMutation = useMutation({
mutationFn: ({
nome,
foto,
descricao,
}: {
nome: string
foto: string
descricao: string
}) => {
return apiFunction.createGroup({ nome, foto, descricao })
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['groups'] })
},
onError: (error) => {
console.error('Algo saiu mal na requisição:', error)
},
})
return createNewGroupMutation
}
}
Exemplo de Uso