我的用例是
Router_configuration.js
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import Product, { loader } from "./Product";
import Route1 from "./Route1";
const router = createBrowserRouter([
{
path: "/",
element: <Product />,
loader: loader,
children: [
{
path: "routeone",
element: <Route1 />
}
]
}
]);
const App = () => {
return <RouterProvider router={router} />;
};
export default App;
Product.js
import Header from "./Header";
import { Outlet } from "react-router-dom";
import Router from "./Router";
const Product = () => {
return (
<>
<Header />
<Outlet />
<Router />
</>
);
};
export default Product;
export const loader = () => {
console.log("loader");
return -1;
};
Header.js
const Header = () => {
return <p>Header</p>;
};
export default Header;
Route1.js
import { NavLink } from "react-router-dom";
const Router = () => {
return (
<>
<NavLink to={"routeone"}>
<span> Route 1</span>
</NavLink>
</>
);
};
export default Router;
在加载每条子路由之前,我需要加载特定的数据.因此,我使用父路由的装载机.似乎单击两次NAVLink(令人惊讶的是,仅在双击时而不是在NAVLink上单击)(路由到子路由)会触发我的父加载器.我的目的是无论内部重定向如何,父路由的加载程序都只被调用一次.
但如果我应该Revalidate:这是正确的方式还是我错过了什么?