Optimiser les requêtes de données pour React et React Query afin qu'elles se produisent uniquement lorsque le composant est dans la fenêtre d'affichage.
P粉714890053
2023-08-28 17:26:18
<p>J'ai une page qui utilise React pour afficher une liste de composants de publication, et pour chaque composant de publication, je reçois les commentaires liés à cette publication et les affiche à l'intérieur à l'aide de la bibliothèque React Query. Le problème est que lorsque l'utilisateur charge la page de publication, React Query charge tous les commentaires de toutes les publications en même temps, ce qui ralentit mon backend. </p>
<p>Je souhaite implémenter un mécanisme qui charge uniquement les commentaires lorsque l'utilisateur fait défiler vers une publication spécifique, au lieu de tout charger en même temps lors du rendu de la page. Comment y parvenir en utilisant React et React Query ? </p>
<p>Voici mon exemple de code actuel pour obtenir et afficher des commentaires : </p>
<p>Mon composant de publication</p>
<p>
<pre class="brush:js;toolbar:false;">importer React depuis 'react';
importer { useQuery } depuis 'react-query' ;
const PostComponent = ({ post }) =>
const {données, isLoading, erreur} = useQuery(
['commentaires', post.id],
() => récupérer les commentaires (post.id)
);
retour (
<div>
{/* Afficher votre composant de publication */}
{isLoading && <div>Chargement des commentaires...</div>}
{erreur && <div>Erreur lors de l'obtention des commentaires</div>}
{données &&
<div><p>{post.title}</p>
)}
</div>
);
};</pré>
</p>
<p>Composant Ma page de publication
<pre class="brush:js;toolbar:false;">importer React depuis 'react';
importer { useQuery } depuis 'react-query' ;
const PostsPage = () =>
const { data, isLoading, error } = useQuery('posts', fetchPosts);
retour (
<div>
{isLoading && <div>Chargement des messages...</div>}
{erreur && <div>Erreur lors de l'obtention des messages</div>}
{données &&
data.map((post) => (
<PostComponent key={post.id} post={post} />
))}
</div>
);
};</pré>
</p>
Pour atteindre cet objectif, vous avez besoin de deux composants.
API Intersection Observer
dans votre application React, vous devez utiliser l'API dereact-intersection-observer
Intersection Observer API
的交互,您应该使用来自react-intersection-observer
库的useInView
Le hookuseInView
de la bibliothèque.