Skip to content

资源预加载,提升用户体验

更新: 2025/8/8 字数: 0 字 时长: 0 分钟

三个思路 第一个思路通过鼠标悬浮,事件监听移动到的字段列,实现预加载

import { useQueryClient } from "@tanstack/react-query";

const queryClient = useQueryClient();

...some tsx...
<li onMouseEnter={() => {
  queryClient.prefetchQuery({
      queryKey: ["book", id],
      queryFn: () => fetchBookDetail(id),
      staleTime: 60 * 1000, //避免过于频繁的网络请求
    });
  }}
>

从缓存中获取数据

const useBookDetail = (id: number) => {
  const queryClient = useQueryClient()
  return useQuery({
    queryKey: ['book', id],
    queryFn: () => fetchBookDetail(id),
    initialData: () => {
      const cache = queryClient.getQueryData<Book>(['bookDetail', id])
      return cache
    },
  })
}

第二个思路监听当前页面,预加载下一页数据

第三个渐进式渲染,先渲染已知元素,即之前页面存在的元素(首页)和跳转的页面(详情页)存在重复的部分,重复的内容可以直接渲染, 不需要等待

本站访客数 人次 本站总访问量