1. Outlet
使用Layout模版的时候,中间的插槽 使用<Outlet />
import { Outlet } from "react-router-dom";
2. createBrowserRouter() 来定义router的结构和格式
const router = createBrowserRouter([
{
path: "question",
element: <QuestionLayout />,
children: [
{
path: "edit/:id",
element: <Edit />,
},
{
path: "stat/:id",
element: <Stat />,
},
],
},
{
path: "/",
element: <MainLayout />,
children: [
{
path: "/",
element: <Home />,
},
{
path: "/login",
element: <Login />,
},
{
path: "/register",
element: <Register />,
},
{
path: "manage",
element: <ManageLayout />,
children: [
{
path: "list",
element: <List />,
},
{
path: "star",
element: <Star />,
},
{
path: "trash",
element: <Trash />,
},
],
},
// 404 page
{
path: "*",
element: <NotFound />,
},
],
},
]);
3. RouterProvider来配置好router
function App() {
return <RouterProvider router={routerConfig}></RouterProvider>;
}
4. 页面跳转
方式1: useNavigate()
const nav = useNavigate();
nav("/login")
nav(-1)
nav({
pathname: "/login",
search: "b=21",
});
获取参数
使用useParams()
如果路由里面定义为 "edit/:id"
获取这个id可以使用 useParams():
const { id = "" } = useParams();
如果是通过url传参数如 http://localhost:3000/manage/list?keyword=xxx
可以使用 useSearchParams()来获取
const [searchParams] = useSearchParams();
console.log("keyword", searchParams.get("keyword"));
方式2: <Link to="/register">Register</Link>
Comments
Post a Comment