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.
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?
Dies ist mein aktueller Beispielcode zum Abrufen und Anzeigen von Kommentaren:
Meine Beitragskomponente
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 ({/* Rendern Sie Ihre Beitragskomponente */} {isLoading &&Kommentare werden geladen...} {error &&Fehler beim Abrufen von Kommentaren} {Daten && (); };{post.title}
)}Komponente „Meine Beitragsseite“.
import React from 'react'; import { useQuery } aus 'react-query'; const PostsPage = () => const { data, isLoading, error } = useQuery('posts', fetchPosts); zurückkehren ({isLoading &&); };Beiträge werden geladen...} {error &&Fehler beim Abrufen von Beiträgen} {Daten && data.map((post) => ())}
为了实现这个目标,您需要两个组件。
Intersection Observer API
的交互,您应该使用来自react-intersection-observer
库的useInView
钩子。