Maison > interface Web > js tutoriel > Tirer parti de la requête React et de la base de données pour la cohérence du cache de données

Tirer parti de la requête React et de la base de données pour la cohérence du cache de données

WBOY
Libérer: 2023-09-26 13:57:11
original
1253 Les gens l'ont consulté

利用 React Query 和数据库实现数据缓存一致性

Utiliser React Query et la base de données pour assurer la cohérence du cache de données

À mesure que les applications frontales deviennent de plus en plus complexes, nous devons souvent interagir avec les données back-end. Afin d'améliorer les performances des applications et l'expérience utilisateur, nous utilisons généralement la mise en cache des données pour réduire le nombre de requêtes réseau. Cependant, la mise en cache des données soulève un problème important : comment maintenir la cohérence des données mises en cache avec la base de données back-end ? Dans cet article, j'expliquerai comment tirer parti de React Query et d'une base de données pour assurer la cohérence du cache de données et je fournirai des exemples de code concrets.

React Query est une excellente bibliothèque de mise en cache des données et de gestion de l'état, qui peut nous aider à gérer facilement les problèmes de mise en cache et de synchronisation des données. Dans cet article, nous utiliserons React Query pour mettre en cache les données de la liste d'utilisateurs et garantir que les données mises en cache sont cohérentes avec les données de la base de données.

Tout d'abord, nous devons installer React Query :

npm install react-query
Copier après la connexion

Ensuite, nous pouvons commencer à écrire du code. Voici un exemple simple montrant comment mettre en cache les données de la liste d'utilisateurs à l'aide de React Query :

import { QueryClient, QueryClientProvider, useQuery } from 'react-query';

const queryClient = new QueryClient();

const fetchUsers = async () => {
  const response = await fetch('/api/users');
  const data = await response.json();
  return data;
}

const UserList = () => {
  const { data } = useQuery('users', fetchUsers);

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

const App = () => {
  return (
    <QueryClientProvider client={queryClient}>
      <UserList />
    </QueryClientProvider>
  );
}

export default App;
Copier après la connexion

Dans le code ci-dessus, nous avons utilisé la fonction hook useQuery pour obtenir les données de la liste d'utilisateurs à partir du cache ou du backend. Le premier paramètre de la fonction useQuery est une chaîne qui identifie le nom de clé des données mises en cache. Lors des requêtes suivantes, nous pouvons utiliser le même nom de clé pour obtenir les données mises en cache au lieu d'envoyer une autre requête réseau. useQuery 钩子函数来从缓存或后端获取用户列表数据。useQuery 函数的第一个参数是一个字符串,用来标识缓存数据的键名。在后续的请求中,我们可以使用相同的键名来获取缓存数据,而不是再次发送网络请求。

同时,我们定义了一个名为 fetchUsers 的函数,该函数通过网络请求获取用户列表数据。这个函数会在初始渲染时触发,从而获取数据并自动更新缓存。

接下来,我们需要确保缓存数据与后端数据库的一致性。为了实现这个目标,我们可以使用 React Query 的 refetch 方法来手动触发数据的更新。下面是一个示例:

import { useQueryClient } from 'react-query';

const UserList = () => {
  const queryClient = useQueryClient();
  const { data } = useQuery('users', fetchUsers);

  const handleUpdate = async () => {
    // 手动触发数据更新
    await queryClient.refetchQueries('users');
  }

  return (
    <div>
      <ul>
        {data.map(user => (
          <li key={user.id}>{user.name}</li>
        ))}
      </ul>
      <button onClick={handleUpdate}>更新数据</button>
    </div>
  );
}
Copier après la connexion

上面的代码中,我们首先使用 useQueryClient 钩子函数获取一个 QueryClient 实例。然后,我们定义了一个 handleUpdate 函数,该函数通过调用 queryClient.refetchQueries 方法手动触发数据的更新。最后,我们在用户列表下方添加了一个按钮,点击按钮后会调用 handleUpdate

Dans le même temps, nous avons défini une fonction nommée fetchUsers, qui obtient les données de la liste d'utilisateurs via des requêtes réseau. Cette fonction sera déclenchée lors du rendu initial pour obtenir des données et mettre à jour automatiquement le cache.

Ensuite, nous devons garantir la cohérence des données mises en cache avec la base de données backend. Pour atteindre cet objectif, nous pouvons utiliser la méthode refetch de React Query pour déclencher manuellement les mises à jour des données. Voici un exemple :

rrreee

Dans le code ci-dessus, nous utilisons d'abord la fonction hook useQueryClient pour obtenir une instance QueryClient. Ensuite, nous définissons une fonction handleUpdate qui déclenche manuellement la mise à jour des données en appelant la méthode queryClient.refetchQueries. Enfin, nous avons ajouté un bouton sous la liste des utilisateurs. Lorsque vous cliquez dessus, la fonction handleUpdate sera appelée pour obtenir les dernières données du backend.

Grâce à la méthode ci-dessus, nous pouvons obtenir une cohérence entre le cache de données front-end et la base de données back-end. Lorsque nous déclenchons manuellement une mise à jour des données, React Query envoie automatiquement une requête réseau et met à jour les données dans le cache. 🎜🎜Pour résumer, l'utilisation de React Query et de la base de données pour assurer la cohérence du cache de données est une méthode efficace qui peut garantir des données précises et à jour tout en maintenant les performances des applications. En utilisant correctement les fonctionnalités fournies par React Query, nous pouvons facilement gérer les problèmes de mise en cache et de synchronisation des données et améliorer l'expérience utilisateur de l'application. 🎜🎜J'espère que cet article vous aidera à comprendre et à maîtriser l'utilisation de React Query et de la base de données pour assurer la cohérence du cache de données. Je vous souhaite plus de succès dans le développement front-end ! 🎜

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!

Étiquettes associées:
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