Maison > interface Web > js tutoriel > le corps du texte

Plug-in de base de données React Query : pratique d'intégration avec GraphQL

WBOY
Libérer: 2023-09-27 20:43:50
original
669 Les gens l'ont consulté

React Query 数据库插件:与GraphQL的集成实践

Plugin de base de données React Query : pratique d'intégration avec GraphQL

Introduction :
React Query est une puissante bibliothèque de gestion de données qui peut nous aider à gérer l'état des données et les demandes dans les applications frontales. Dans le même temps, GraphQL est un langage de requête de données moderne qui offre de puissantes capacités de requête de données et d'exploitation. Dans cet article, nous verrons comment intégrer React Query à GraphQL pour gérer plus efficacement l'état des données.

Bases de React Query :
React Query est une bibliothèque de gestion de données basée sur React qui gère l'état des données et les demandes en fournissant des React Hooks personnalisés. Ces Hooks incluent useQuery, useMutation, usePaginataion, etc. Il gère les données via la mise en cache et fournit des fonctions telles que des requêtes automatiques et des mises à jour automatiques des données.

Bases de GraphQL :
GraphQL est un langage de requête et un environnement d'exécution pour les API. Il permet au client de définir les structures de données et les requêtes de données requises et réduit le problème de récupération excessive des données. Avec GraphQL, les clients peuvent récupérer uniquement les données dont ils ont besoin, améliorant ainsi les performances et réduisant les requêtes réseau.

Pratique d'intégration de React Query et GraphQL :
Pour intégrer GraphQL, nous devons utiliser les hooks useQuery et useMutation fournis par React Query et combiner l'API de requête fournie par GraphQL pour effectuer des demandes de données et des opérations.

Étape 1 : Installer les dépendances requises
Tout d'abord, nous devons installer les packages liés à React-Query et graphql via npm ou Yarn.

Étape 2 : Configurer le client GraphQL
Nous pouvons utiliser une bibliothèque client GraphQL existante, telle que Apollo Client ou Relay, comme client GraphQL. Ici, nous prenons Apollo Client comme exemple pour introduire les pratiques d'intégration.

Tout d’abord, nous devons créer une instance de client Apollo et la transmettre au QueryClientProvider de React Query.

import { ApolloClient, InMemoryCache } from '@apollo/client';
import { QueryClient, QueryClientProvider } from 'react-query';

const client = new ApolloClient({
  uri: 'https://mygraphqlapi.com/graphql',
  cache: new InMemoryCache(),
});

const queryClient = new QueryClient();

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      {/* App 组件内容 */}
    </QueryClientProvider>
  );
}
Copier après la connexion

Étape 3 : Définir la requête GraphQL
Dans notre composant, nous pouvons définir notre requête GraphQL à l'aide de useQuery Hook.

import { useQuery } from 'react-query';
import { gql } from 'graphql-tag';

const GET_POSTS = gql`
  query GetPosts {
    getPosts {
      id
      title
      content
    }
  }
`;

function Posts() {
  const { data, isLoading, error } = useQuery('posts', async () => {
    const response = await client.query({
      query: GET_POSTS,
    });
    return response.data.getPosts;
  });

  if (isLoading) {
    return <div>Loading...</div>;
  }

  if (error) {
    return <div>Error: {error.message}</div>;
  }

  return (
    <div>
      {data.map((post) => (
        <div key={post.id}>
          <h3>{post.title}</h3>
          <p>{post.content}</p>
        </div>
      ))}
    </div>
  );
}
Copier après la connexion

Étape 4 : Définir les modifications GraphQL
En plus des requêtes, nous pouvons également utiliser useMutation Hook pour définir les modifications GraphQL.

import { useMutation } from 'react-query';
import { gql } from 'graphql-tag';

const ADD_POST = gql`
  mutation AddPost($title: String!, $content: String!) {
    addPost(title: $title, content: $content) {
      id
      title
      content
    }
  }
`;

function AddPostForm() {
  const [title, setTitle] = useState('');
  const [content, setContent] = useState('');

  const mutation = useMutation(async () => {
    await client.mutate({
      mutation: ADD_POST,
      variables: {
        title,
        content,
      },
    });
  });

  const handleSubmit = (event) => {
    event.preventDefault();
    mutation.mutate();
  };

  return (
    <form onSubmit={handleSubmit}>
      <input
        type="text"
        value={title}
        onChange={(e) => setTitle(e.target.value)}
      />
      <textarea
        value={content}
        onChange={(e) => setContent(e.target.value)}
      ></textarea>
      <button type="submit" disabled={mutation.isLoading}>
        Add post
      </button>
    </form>
  );
}
Copier après la connexion

Résumé :
Grâce aux pratiques ci-dessus, nous avons intégré avec succès React Query et GraphQL. Les puissantes capacités de mise en cache et de requête automatique de React Query, combinées à la flexibilité et à l'efficacité de GraphQL, peuvent considérablement améliorer les performances de nos applications et l'efficacité de notre développement.

Bien sûr, ce qui précède n'est qu'un exemple simple, et les applications réelles peuvent être plus compliquées. Mais cet exemple peut nous aider à comprendre comment intégrer React Query et GraphQL et les appliquer dans un développement réel.

J'espère que cet article vous aidera à comprendre la pratique d'intégration de React Query et GraphQL. Je vous souhaite du succès dans l'utilisation de React Query et GraphQL pour la gestion de l'état des données !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!