php 网站 服务器,织梦做分类信息网站,房产信息网58同城,网站建设 招标书React Router 用法
React 使得开发者能够轻松地创建交互式的单页应用#xff08;SPA#xff09;#xff0c;单页应用的一个常见挑战是如何处理页面导航和路由吗#xff0c;React Router 就是解决这个问题的工具
路由#xff08;Router#xff09;是 React Router 的核心…React Router 用法
React 使得开发者能够轻松地创建交互式的单页应用SPA单页应用的一个常见挑战是如何处理页面导航和路由吗React Router 就是解决这个问题的工具
路由Router是 React Router 的核心概念当 URL 匹配某个路由时React Router 会渲染该路由对应的组件。 React Router 会根据 URL 和路由的匹配规则来决定哪个组件需要渲染。匹配规则支持动态参数、正则匹配等。 并且React Router 允许你在一个路由内部嵌套另一个路由从而实现更复杂的界面结构。
用法
导入 BrowserRouter 组件并将其包裹在应用的根组件外部
import React from react;
import ReactDOM from react-dom;
import { BrowserRouter } from react-router-dom;
import App from ./App;ReactDOM.render(BrowserRouterApp //BrowserRouter,document.getElementById(root)
);BrowserRouter 和 HashRouter BrowserRouter使用 HTML5 的 History API如 pushState 和 replaceState来实现无哈希的干净 URL。类似于常见的 URL例如https://example.com/about 每次路径发生变化时它会使用 History API 修改浏览器的地址栏而不刷新页面。 HashRouter 使用 URL 的哈希部分#进行路由管理依赖浏览器的 hashChange 事件。URL 包含 # 符号例如https://example.com/#/about HashRouter 把路径存储在 URL 的哈希部分浏览器不会将哈希部分发送到服务器因此页面不会刷新。URL 的哈希部分变化时HashRouter 会拦截这些变化并更新页面。 browserRouter需要后端支持服务器必须配置将所有请求指向入口文件(index.html);而HashRouter则直接在客户端处理无需后端支持 使用Route定义路由 使用 Route 组件可以定义路由。每个 Route 组件都需要一个 path 属性表示匹配的 URL 路径以及一个 element 属性表示在该路径匹配时需要渲染的组件。 React Router 允许你根据用户的身份、权限等条件来实现路由守卫和重定向功能。例如使用 Navigate 组件可以实现页面重定向
import React from react;
import { Route, Routes } from react-router-dom;
import Home from ./Home;
import About from ./About;function App() {return (divRoutesRoute path/hone element{Home /} /Route path/about element{About /} /Route path* element{Navigate to{/home}/}//Routes/div);
}当用户访问 / 路径时Home 组件将被渲染当访问 /about 路径时About 组件将被渲染。到其他路由会被重定向到/home
嵌套路由 嵌套路由可以使用 Route 的 children 属性或者在 Route 内部定义子路由来实现
function App() {return (RoutesRoute path/dashboard element{Dashboard /}Route pathsettings element{Settings /} //Route/Routes);
}在这个例子中/dashboard/settings 路径将渲染 Settings 组件而 /dashboard 将渲染 Dashboard 组件
使用参数 React Router 允许在路由路径中使用动态参数并且可以通过 useParams 钩子获取
import React from react;
import { useParams } from react-router-dom;function User() {const { id } useParams();return divUser ID: {id}/div;
}function App() {return (RoutesRoute path/user/:id element{User /} //Routes);
}在上面的例子中/user/:id 路径中的 :id 就是一个动态参数。访问 /user/123 时User 组件将渲染并显示 User ID: 123。