我找到了一个名为 nprogress 的库,它可以自动在我的 React 应用程序中显示全局进度条。为此,我需要在导航时进行监听。我从 react-router-dom 中找到了钩子 useNavigation ,它必须在RouterProvider中使用,但 id 不支持子项。我尝试这样做:
import { useEffect } from "react";
import "./App.css";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import HomePage from './HomePage.tsx',
import AboutPage from './AboutPage.tsx'
import {
Route,
Link,
useNavigation,
createBrowserRouter,
createRoutesFromElements,
RouterProvider,
} from "react-router-dom";
const ProgressBarHandler = () => {
const navigation = useNavigation();
useEffect(() => {
if (navigation.state === "loading") {
NProgress.start();
} else {
NProgress.done();
}
}, [navigation.state]);
return null;
};
const router = createBrowserRouter(
createRoutesFromElements(
<>
<Route path="/" element={<HomePage />} />
<Route path="/about" element={<AboutPage />} />
</>
)
);
function App() {
return (
<RouterProvider
router={router}
future={{
v7_startTransition: true,
}}
fallbackElement={<ProgressBarHandler />}
/>
);
}
我需要的是让它在导航时启动,因为有时需要几秒钟才能完成渲染一个复杂的页面,并在完成后停止。我发现这useNavigation
真的很酷,因为它还可以自动管理表单操作和许多其他事情。
您对如何使用此钩子或其他钩子来监控导航有什么建议吗?