Maison > interface Web > js tutoriel > Utilisez React Query et la base de données pour obtenir une synchronisation incrémentielle des données

Utilisez React Query et la base de données pour obtenir une synchronisation incrémentielle des données

WBOY
Libérer: 2023-09-27 08:16:46
original
889 Les gens l'ont consulté

利用 React Query 和数据库实现数据增量同步

Titre : Implémentation de la synchronisation incrémentielle des données à l'aide de React Query et d'une base de données

Introduction :
À mesure que les applications se développent, la gestion des données devient de plus en plus importante. Dans les applications traditionnelles, l'interrogation ou l'interrogation longue est généralement utilisée pour réaliser la synchronisation des données. Cependant, cette méthode est non seulement inefficace, mais entraîne également un gaspillage des ressources du serveur. Pour résoudre ce problème, nous pouvons utiliser React Query et la base de données pour réaliser une synchronisation incrémentielle des données afin d'améliorer les performances des applications et l'expérience utilisateur.

Cet article expliquera comment utiliser React Query et la base de données pour réaliser une synchronisation incrémentielle des données et fournira des exemples de code spécifiques. Tout d'abord, nous expliquerons les concepts de base et l'utilisation de React Query, puis présenterons comment implémenter la synchronisation incrémentielle des données dans React Query. Enfin, nous montrerons comment interagir avec la base de données pour ajouter, supprimer, modifier et interroger des données.

1. Concepts de base et utilisation de React Query
React Query est une bibliothèque de gestion d'état moderne qui se concentre sur le traitement des requêtes et des réponses avec le serveur. Il fournit une API simple et puissante qui peut nous aider à gérer l'acquisition, la synchronisation et la mise en cache des données. Voici les concepts de base et l'utilisation de React Query :

  1. Requête : Opération utilisée pour obtenir des données. Il contient l'identifiant de requête, la fonction de requête et d'autres informations de configuration. En appelant la fonction hook useQuery, nous pouvons définir une requête dans le composant.
  2. Mutation : Opération permettant de modifier des données. Semblable à Query, il contient des identifiants, des fonctions de requête et d'autres informations de configuration pour modifier les données. En appelant la fonction hook useMutation, nous pouvons définir une mutation dans le composant.
  3. QueryCache : Opération de mise en cache des données. Il gère automatiquement la mise en cache et l'invalidation des données pour améliorer les performances et la réactivité des applications.
  4. QueryClient : utilisé pour gérer les instances de requête et de mutation. Il peut être obtenu via la fonction hook useQueryClient.

2. Implémentation de la synchronisation incrémentielle des données
Nous allons maintenant présenter comment implémenter la synchronisation incrémentielle des données dans React Query. Tout d’abord, nous devons définir une requête et une mutation pour obtenir et modifier les données. Voici un exemple spécifique :

import { useQuery, useMutation } from 'react-query';

function fetchData() {
  // 发起网络请求,获取数据
  return fetch('/api/data')
    .then(response => response.json())
    .then(data => data);
}

function updateData(data) {
  // 发起网络请求,修改数据
  return fetch('/api/data', {
    method: 'PUT',
    body: JSON.stringify(data),
    headers: {
      'Content-Type': 'application/json'
    }
  })
    .then(response => response.json())
    .then(updatedData => updatedData);
}

function App() {
  const { data } = useQuery('data', fetchData);
  const mutation = useMutation(updateData);

  const handleUpdate = newData => {
    // 调用 mutation.mutate 函数,更新数据
    mutation.mutate(newData);
  };

  return (
    <div>
      <button onClick={() => handleUpdate({})}>更新数据</button>
      <pre class="brush:php;toolbar:false">{JSON.stringify(data, null, 2)}
); }
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction hook useQuery pour définir une requête nommée 'data' afin d'obtenir les données en appelant la fonction fetchData. Ensuite, nous utilisons la fonction hook useMutation pour définir une mutation et modifier les données en appelant la fonction updateData. Dans le composant, on déclenche la mise à jour des données en appelant la fonction mutation.mutate.

3. Interagir avec la base de données
Les fonctions fetchData et updateData dans les exemples de code ci-dessus ne sont que de simples exemples de requêtes réseau. Dans les applications réelles, nous devons généralement interagir avec la base de données. Voici un exemple d'opération CRUD avec la base de données :

import { useQuery, useMutation, queryCache, useQueryClient } from 'react-query';

function fetchTodos() {
  return axios.get('/api/todos')
    .then(response => response.data);
}

function addTodo(newTodo) {
  return axios.post('/api/todos', newTodo)
    .then(response => response.data);
}

function updateTodo(id, updatedTodo) {
  return axios.put(`/api/todos/${id}`, updatedTodo)
    .then(response => response.data);
}

function deleteTodo(id) {
  return axios.delete(`/api/todos/${id}`)
    .then(response => response.data);
}

function TodoList() {
  const { data: todos } = useQuery('todos', fetchTodos);
  const queryClient = useQueryClient();
  const mutation = useMutation(addTodo, {
    onSuccess: () => {
      queryClient.invalidateQueries('todos');
    }
  });

  const handleAddTodo = newTodo => {
    mutation.mutate(newTodo);
  };

  const handleUpdateTodo = (id, updatedTodo) => {
    updateTodo(id, updatedTodo)
      .then(() => queryClient.invalidateQueries('todos'));
  };

  const handleDeleteTodo = id => {
    deleteTodo(id)
      .then(() => queryClient.invalidateQueries('todos'));
  };

  return (
    <div>
      <form onSubmit={e => {
        e.preventDefault();
        handleAddTodo({
          text: e.target.elements.text.value
        });
        e.target.reset();
      }}>
        <input type="text" name="text" placeholder="输入待办事项" />
        <button type="submit">添加</button>
      </form>
      {todos && todos.map(todo => (
        <div key={todo.id}>
          <span>{todo.text}</span>
          <button onClick={() => handleUpdateTodo(todo.id, { completed: !todo.completed })}>
            {todo.completed ? '标为未完成' : '标为完成'}
          </button>
          <button onClick={() => handleDeleteTodo(todo.id)}>
            删除
          </button>
        </div>
      ))}
    </div>
  );
}
Copier après la connexion

Dans l'exemple de code ci-dessus, nous utilisons la bibliothèque axios pour envoyer des requêtes réseau pour interagir avec la base de données. Comme vous pouvez le voir, nous définissons une mutation nommée addTodo via la fonction hook useMutation, qui est utilisée pour ajouter des éléments de tâche. Après un ajout réussi, queryClient.invalidateQueries('todos') est appelé pour mettre à jour les données. De même, nous définissons également la mutation de updateTodo et deleteTodo pour mettre à jour et supprimer les éléments de tâche.

Résumé :
Cet article explique comment utiliser React Query et la base de données pour réaliser une synchronisation incrémentielle des données. En utilisant les requêtes et mutations de React Query, nous pouvons facilement obtenir, modifier, ajouter et supprimer des données. Dans le même temps, nous avons également démontré comment interagir avec la base de données et manipuler les données via des requêtes réseau. J'espère que cet article vous aidera à comprendre la synchronisation incrémentielle des données et à rendre vos applications plus efficaces et plus pratiques.

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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal