Maison  >  Article  >  interface Web  >  Stratégies de performances frontales pour optimiser les requêtes de base de données dans React Query

Stratégies de performances frontales pour optimiser les requêtes de base de données dans React Query

WBOY
WBOYoriginal
2023-09-26 11:38:051512parcourir

在 React Query 中优化数据库查询的前端性能策略

Stratégies de performances front-end pour optimiser les requêtes de base de données dans React Query

Dans le développement front-end moderne, nous devons souvent interagir avec la base de données back-end pour obtenir les données nécessaires au rendu de la page. Cependant, des requêtes fréquentes dans la base de données peuvent entraîner des problèmes de performances, en particulier lorsque la page doit restituer de grandes quantités de données. Dans ce cas, nous pouvons utiliser React Query pour optimiser les performances frontales des requêtes de base de données.

React Query est une bibliothèque JavaScript permettant de gérer les requêtes de données et l'état. Il fournit un moyen simple et basé sur des hooks d'interroger et de mettre en cache des données. En utilisant React Query, nous pouvons réduire le nombre de demandes de données et la complexité du partage de données entre les composants.

Alors, comment optimiser les performances front-end des requêtes de base de données dans React Query ? Ci-dessous, nous explorerons quelques stratégies spécifiques et donnerons des exemples de code.

  1. Mise en cache des données

React Query dispose d'un mécanisme de mise en cache des données intégré qui peut mettre en cache les données obtenues en mémoire pour une réutilisation ultérieure. De cette façon, la prochaine fois que les mêmes données seront interrogées, il n'est pas nécessaire de renvoyer la requête à la base de données principale, améliorant ainsi les performances.

Voici un exemple qui montre comment utiliser le mécanisme de mise en cache dans React Query :

import { useQuery } from 'react-query';

const fetchUserData = async (userId) => {
  const response = await fetch(`/api/users/${userId}`);
  const data = await response.json();
  return data;
};

const UserProfile = ({ userId }) => {
  const { data } = useQuery(['user', userId], () => fetchUserData(userId));
  
  // 渲染用户数据
  return (
    <div>
      <h1>{data.name}</h1>
      <p>{data.bio}</p>
    </div>
  );
};

Dans cet exemple, nous utilisons le hook useQuery pour obtenir les données utilisateur et mettre le userId de les données comme clé de requête. React Query mettra automatiquement en cache les résultats de cette requête afin qu'ils puissent être utilisés directement la prochaine fois que vous interrogerez les mêmes données. useQuery 钩子来获取用户数据,并将数据的 userId 作为查询键。React Query 会自动缓存这个查询的结果,以便在下次查询同样的数据时直接使用。

  1. 合并多个查询

有时,我们可能需要同时查询多个数据,例如获取用户的个人信息和订单信息。在这种情况下,我们可以使用 useQueries 钩子来合并多个查询。这样一来,React Query 可以将这些查询同时发送到后端,并在所有查询都完成后返回结果。

下面是一个示例,展示了如何在 React Query 中合并多个查询:

import { useQueries } from 'react-query';

const fetchUserData = async (userId) => {
  const response = await fetch(`/api/users/${userId}`);
  const data = await response.json();
  return data;
};

const fetchOrderData = async (userId) => {
  const response = await fetch(`/api/orders?userId=${userId}`);
  const data = await response.json();
  return data;
};

const UserProfile = ({ userId }) => {
  const queries = useQueries([
    { queryKey: ['user', userId], queryFn: () => fetchUserData(userId) },
    { queryKey: ['orders', userId], queryFn: () => fetchOrderData(userId) },
  ]);

  const userData = queries[0].data;
  const orderData = queries[1].data;

  // 渲染用户数据和订单数据
  return (
    <div>
      <h1>{userData.name}</h1>
      <p>{userData.bio}</p>
      
      <h2>订单信息</h2>
      <ul>
        {orderData.map(order => (
          <li key={order.id}>{order.name}</li>
        ))}
      </ul>
    </div>
  );
};

在这个示例中,我们使用 useQueries 钩子同时发送多个查询,并将查询的结果分别存储在 userDataorderData 变量中。

通过合并多个查询,我们可以减少与后端的交互次数,提高性能。

  1. 预取和更新数据

React Query 还提供了一些钩子和函数,以便在组件初始化时预取数据,并在后续用户操作时更新数据。

例如,我们可以使用 useQueryClient 钩子来获取 QueryClient 实例,并使用其 prefetchQuery 函数来预取数据。这样一来,即使用户尚未点击获取数据的按钮,我们的应用也可以在后台获取数据,并保持最新的状态。

下面是一个示例,展示了如何在 React Query 中使用预取数据:

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

const fetchUserData = async (userId) => {
  const response = await fetch(`/api/users/${userId}`);
  const data = await response.json();
  return data;
};

const UserProfile = ({ userId }) => {
  const queryClient = useQueryClient();

  queryClient.prefetchQuery(['user', userId], () => fetchUserData(userId));

  const { data } = useQuery(['user', userId], () => fetchUserData(userId));

  // 渲染用户数据
  return (
    <div>
      <h1>{data.name}</h1>
      <p>{data.bio}</p>
    </div>
  );
};

在这个示例中,我们使用 useQueryClient 钩子获取 QueryClient 实例,并调用 prefetchQuery 函数来预取用户数据。然后,我们使用 useQuery

    Fusionner plusieurs requêtes

    Parfois, nous pouvons avoir besoin d'interroger plusieurs données en même temps, par exemple pour obtenir les informations personnelles de l'utilisateur et les informations de commande. Dans ce cas, nous pouvons utiliser le hook useQueries pour combiner plusieurs requêtes. De cette façon, React Query peut envoyer ces requêtes au backend simultanément et renvoyer les résultats une fois toutes les requêtes terminées.

    Voici un exemple qui montre comment combiner plusieurs requêtes dans React Query :

    rrreee🎜Dans cet exemple, nous utilisons le hook useQueries pour envoyer plusieurs requêtes en même temps et séparer les résultats des requêtes Stockées dans les variables userData et orderData. 🎜🎜En fusionnant plusieurs requêtes, nous pouvons réduire le nombre d'interactions avec le backend et améliorer les performances. 🎜
      🎜Précupérer et mettre à jour les données🎜🎜🎜React Query fournit également des hooks et des fonctions pour préextraire les données lors de l'initialisation du composant et mettre à jour les données lors des opérations utilisateur ultérieures. 🎜🎜Par exemple, nous pouvons utiliser le hook useQueryClient pour obtenir une instance QueryClient et utiliser sa fonction prefetchQuery pour préextraire les données. De cette façon, même si l'utilisateur n'a pas cliqué sur le bouton pour obtenir les données, notre application peut récupérer les données en arrière-plan et les maintenir à jour. 🎜🎜Voici un exemple montrant comment utiliser la prélecture des données dans React Query : 🎜rrreee🎜Dans cet exemple, nous utilisons le hook useQueryClient pour obtenir l'instance QueryClient et appeler prefetchQuery code> fonction pour préextraire les données utilisateur. Ensuite, nous utilisons le hook <code>useQuery pour obtenir les données et les afficher sur la page. 🎜🎜En prélevant les données, nous pouvons fournir des réponses plus rapides lorsque les utilisateurs en ont réellement besoin. 🎜🎜En résumé, en utilisant React Query, nous pouvons optimiser les performances frontales des requêtes de base de données. Nous pouvons mettre en cache des données, combiner plusieurs requêtes pour réduire le nombre d'interactions, pré-extraire des données pour améliorer la vitesse de réponse, et bien plus encore. Ces stratégies peuvent améliorer efficacement les performances front-end et offrir une meilleure expérience utilisateur. 🎜🎜Il est fortement recommandé aux développeurs de choisir de manière flexible la stratégie appropriée en fonction de scénarios commerciaux spécifiques et des exigences de performances lors de l'utilisation de React Query. 🎜

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!

Déclaration:
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