React中怎么在路由跳转前预取数据避免白屏?
我用React Router做页面跳转,但新页面的数据是进入后才请求的,导致有短暂白屏。听说可以用数据预取解决,但不知道怎么在跳转前就提前加载好数据?
试过在useEffect里请求,但还是等组件挂载后才触发,体验不好。有没有办法在点击链接时就预取?比如下面这种写法能优化吗:
const ProfilePage = () => {
const [user, setUser] = useState(null);
const { id } = useParams();
useEffect(() => {
fetch(<code>/api/users/${id}</code>).then(res => res.json()).then(setUser);
}, [id]);
if (!user) return <div>加载中...</div>;
return <div>{user.name}</div>;
};
这比useEffect快多了,点击链接就开始加载数据。