Optimumkan pertanyaan data untuk React dan React Query hanya berlaku apabila komponen berada dalam viewport
P粉714890053
2023-08-28 17:26:18
<p>Saya mempunyai halaman yang menggunakan React untuk memaparkan senarai komponen siaran dan untuk setiap komponen siaran saya mendapat ulasan yang berkaitan dengan siaran itu dan memaparkannya di dalam menggunakan perpustakaan React Query. Masalahnya ialah apabila pengguna memuatkan halaman siaran, React Query memuatkan semua ulasan untuk semua siaran sekaligus, yang menyebabkan bahagian belakang saya menjadi perlahan. </p>
<p>Saya mahu melaksanakan mekanisme yang hanya memuatkan ulasan apabila pengguna menatal ke siaran tertentu, bukannya memuatkan semuanya sekali gus apabila halaman dipaparkan. Bagaimana untuk mencapai ini menggunakan React and React Query? </p>
<p>Ini ialah kod sampel semasa saya untuk mendapatkan dan memaparkan ulasan: </p>
<p>Komponen Catatan Saya</p>
<p>
<pre class="brush:js;toolbar:false;">import React daripada 'react';
import { useQuery } daripada 'react-query';
const PostComponent = ({ post }) =>
const {data, isLoading, error } = useQuery(
['komen', post.id],
() => fetchComments(post.id)
);
kembali (
<div>
{/* Render komponen siaran anda */}
{isLoading && <div>Memuatkan ulasan...</div>}
{error && <div>Ralat mendapatkan ulasan</div>}
{data &&
<div><p>{post.title}</p>
)}
</div>
);
};</pre>
</p>
<p>Komponen Halaman Catatan Saya
<pre class="brush:js;toolbar:false;">import React daripada 'react';
import { useQuery } daripada 'react-query';
const Halaman Catatan = () =>
const { data, isLoading, error } = useQuery('posts', fetchPosts);
kembali (
<div>
{isLoading && <div>Memuatkan siaran...</div>}
{ralat && <div>Ralat mendapatkan siaran</div>}
{data &&
data.map((post) => (
<PostComponent key={post.id} post={post} />
))}
</div>
);
};</pre>
</p>
Untuk mencapai matlamat ini, anda memerlukan dua komponen.
Intersection Observer API
dalam apl React anda, anda harus menggunakan API daripadareact-intersection-observer
Intersection Observer API
的交互,您应该使用来自react-intersection-observer
库的useInView
cangkukuseInView
perpustakaan.