如何在Next 13上的路线导航之间创建加载程序

zzoitvuj  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(102)

我想把一个加载在我的屏幕之间的路线导航下一个13向用户表明,我们有一个正在进行的导航
我尝试使用旧方法,但我无法在客户端组件中使用next/router

kulphzqa

kulphzqa1#

1.在组件目录中创建一个名为Loader.js的新文件。
2.在Loader.js中,添加以下代码:

import { useEffect, useState } from 'react';

const Loader = () => {
  const [loading, setLoading] = useState(false);

  useEffect(() => {
    const handleStart = () => setLoading(true);
    const handleComplete = () => setLoading(false);

    Router.events.on('routeChangeStart', handleStart);
    Router.events.on('routeChangeComplete', handleComplete);
    Router.events.on('routeChangeError', handleComplete);

    return () => {
      Router.events.off('routeChangeStart', handleStart);
      Router.events.off('routeChangeComplete', handleComplete);
      Router.events.off('routeChangeError', handleComplete);
    };
  }, []);

  return loading ? <div>Loading...</div> : null;
};

export default Loader;

3.在主布局组件(例如Layout.js)中,导入并使用Loader组件:

import Loader from './Loader';

const Layout = ({ children }) => {
  return (
    <div>
      <Loader />
      {children}
    </div>
  );
};

export default Layout;

4.使用布局组件 Package 需要加载指示器的页面或组件:

import Layout from '../components/Layout';

const HomePage = () => {
  return (
    <Layout>
      {/* Your page content */}
    </Layout>
  );
};

export default HomePage;

相关问题