Optimieren Sie die Datenabfrage für React und React Query so, dass sie nur erfolgt, wenn sich die Komponente im Ansichtsfenster befindet
<p>Ich habe eine Seite, die React verwendet, um eine Liste von Beitragskomponenten zu rendern, und für jede Beitragskomponente erhalte ich die Kommentare zu diesem Beitrag und zeige sie mithilfe der React Query-Bibliothek darin an. Das Problem besteht darin, dass React Query alle Kommentare für alle Beiträge auf einmal lädt, wenn der Benutzer die Beitragsseite lädt, was dazu führt, dass mein Backend langsamer wird. </p>
<p>Ich möchte einen Mechanismus implementieren, der Kommentare nur dann lädt, wenn der Benutzer zu einem bestimmten Beitrag scrollt, anstatt alles auf einmal zu laden, wenn die Seite gerendert wird. Wie erreicht man dies mit React und React Query? </p>
<p>Dies ist mein aktueller Beispielcode zum Abrufen und Anzeigen von Kommentaren: </p>
<p>Meine Beitragskomponente</p>
<p>
<pre class="brush:js;toolbar:false;">import React from 'react';
import { useQuery } aus 'react-query';
const PostComponent = ({ post }) =>
const { data, isLoading, error } = useQuery(
['Kommentare', post.id],
() => fetchComments(post.id)
);
zurückkehren (
<div>
{/* Rendern Sie Ihre Beitragskomponente */}
{isLoading && <div>Kommentare werden geladen...</div>}
{error && <div>Fehler beim Abrufen von Kommentaren</div>}
{Daten && (
<div><p>{post.title}</p>
)}
</div>
);
};</pre>
</p>
<p>Komponente „Meine Beitragsseite“.
<pre class="brush:js;toolbar:false;">import React from 'react';
import { useQuery } aus 'react-query';
const PostsPage = () =>
const { data, isLoading, error } = useQuery('posts', fetchPosts);
zurückkehren (
<div>
{isLoading && <div>Beiträge werden geladen...</div>}
{error && <div>Fehler beim Abrufen von Beiträgen</div>}
{Daten &&
data.map((post) => (
<PostComponent key={post.id} post={post} />
))}
</div>
);
};</pre>
</p>