Domine a Integração de Hasura e GraphQL em Aplicações React

Aprenda a integrar Hasura com GraphQL em suas aplicações React de maneira prática e eficiente.

Introdução à Integração de Hasura e GraphQL no React

A utilização de Hasura com GraphQL oferece um poderoso conjunto de ferramentas para o desenvolvimento de aplicações modernas. Neste tutorial, vamos explorar como você pode integrar Hasura em suas aplicações React de forma simples e eficiente.

O que é Hasura?

Hasura é uma plataforma que fornece uma API GraphQL instantânea a partir de bancos de dados existentes. Isso significa que, ao conectar seu banco de dados ao Hasura, você pode gerar consultas GraphQL automaticamente, facilitando o acesso e manipulação dos dados. Ao usar Hasura, você elimina a necessidade de escrever resolvers e lógica de API, permitindo que você se concentre na construção da interface do usuário.

Configurando o Hasura

Para começar a usar Hasura, você precisa criar uma conta e configurar um novo projeto. Siga estes passos:

  1. Acesse o site do Hasura e crie uma conta.
  2. Crie um novo projeto e conecte-o ao seu banco de dados.
  3. Configure as permissões de acesso para suas tabelas e colunas, garantindo que sua API GraphQL esteja segura e acessível apenas para quem você permitir.

Instalando o Apollo Client

Para interagir com a API GraphQL do Hasura em sua aplicação React, você pode usar o Apollo Client, uma biblioteca popular para gerenciar dados. Para instalar o Apollo Client, execute o seguinte comando:

npm install @apollo/client graphql

Com o Apollo Client instalado, você pode começar a configurar a conexão com a API do Hasura em seu componente principal.

Configurando o Apollo Provider

import React from 'react';
import { ApolloClient, ApolloProvider, InMemoryCache } from '@apollo/client';

const client = new ApolloClient({
  uri: 'https://sua-api-hasura.herokuapp.com/v1/graphql',
  cache: new InMemoryCache(),
});

function App() {
  return (
    <ApolloProvider client={client}>
      {/* seus componentes aqui */}
    </ApolloProvider>
  );
}

O código acima configura o Apollo Client e envolve sua aplicação com o ApolloProvider, permitindo que todos os componentes filhos acessem a API GraphQL do Hasura.

Fazendo Consultas GraphQL

Agora que você já configurou o Apollo Client, vamos fazer uma consulta para buscar dados. Suponha que você tenha uma tabela chamada users em seu banco de dados. Você pode criar uma consulta da seguinte forma:

import { useQuery, gql } from '@apollo/client';

const GET_USERS = gql`
  query GetUsers {
    users {
      id
      name
      email
    }
  }
`;

function UserList() {
  const { loading, error, data } = useQuery(GET_USERS);

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;

  return (
    <ul>
      {data.users.map(user => (
        <li key={user.id}>{user.name} - {user.email}</li>
      ))}
    </ul>
  );
}

Neste exemplo, a consulta GET_USERS busca todos os usuários da tabela users e renderiza uma lista com seus nomes e e-mails. A função useQuery gerencia o estado de carregamento e erro, proporcionando uma experiência de usuário mais fluida.

Mutações com Hasura

Além de consultas, você também pode realizar mutações para adicionar, atualizar ou excluir dados. Vamos ver um exemplo de como adicionar um novo usuário:

const ADD_USER = gql`
  mutation AddUser($name: String!, $email: String!) {
    insert_users(objects: { name: $name, email: $email }) {
      returning {
        id
        name
        email
      }
    }
  }
`;

function AddUserForm() {
  let inputName;
  let inputEmail;

  const [addUser] = useMutation(ADD_USER);

  const handleSubmit = (e) => {
    e.preventDefault();
AddUser({ variables: { name: inputName.value, email: inputEmail.value } });
    inputName.value = '';
    inputEmail.value = '';
  };

  return (
    <form onSubmit={handleSubmit}>
      <input ref={node => inputName = node} placeholder="Nome" />
      <input ref={node => inputEmail = node} placeholder="Email" />
      <button type="submit">Adicionar Usuário</button>
    </form>
  );
}

Neste trecho, a mutação ADD_USER insere um novo usuário no banco de dados. O formulário captura os valores de entrada e, ao ser enviado, chama a mutação para adicionar o usuário.

Conclusão

Integrar Hasura e GraphQL em suas aplicações React pode acelerar significativamente o desenvolvimento e proporcionar uma maneira mais eficiente de trabalhar com dados. Com as ferramentas certas, como o Apollo Client, você pode gerenciar consultas e mutações de forma intuitiva. Experimente essas técnicas e veja como elas podem transformar a forma como você desenvolve suas aplicações!

Hasura é uma ferramenta poderosa que proporciona a criação de APIs GraphQL a partir de bancos de dados existentes. Isso facilita a integração de dados em aplicações React, permitindo que desenvolvedores se concentrem na construção da interface do usuário, ao invés de se perderem na complexidade da lógica de backend. A utilização do GraphQL com Hasura não só otimiza a comunicação entre o frontend e o backend, mas também garante que as aplicações sejam escaláveis e eficientes. Neste contexto, entender como utilizar essas tecnologias em conjunto é essencial para qualquer desenvolvedor que deseja se manter relevante no mercado atual.

Algumas aplicações:

  • Desenvolvimento rápido de aplicações
  • Integração de dados em tempo real
  • Criação de dashboards dinâmicos
  • Facilitação de testes e protótipos

Dicas para quem está começando

  • Comece lendo a documentação oficial do Hasura.
  • Pratique criando pequenos projetos para entender como funciona a integração.
  • Participe de comunidades online para trocar ideias e tirar dúvidas.
  • Estude conceitos básicos de GraphQL antes de avançar.
  • Utilize ferramentas como GraphiQL para testar suas queries e mutations.

Contribuições de Gabriel Nogueira

Compartilhe este tutorial: Como utilizar Hasura para GraphQL no React?

Compartilhe este tutorial

Continue aprendendo:

Como utilizar Directus para consumir dados no React?

Entenda como integrar Directus com React e potencialize suas aplicações com dados dinâmicos.

Tutorial anterior

Como criar uma API REST com NestJS e consumi-la no React?

Aprenda a criar uma API REST utilizando NestJS e a consumi-la em aplicações React.

Próximo tutorial