深圳做h5网站,领优惠券的网站怎么做,陶然亭网站建设,企业网站制作哪些公司制作一个路由就是一个映射关系
key为路径#xff0c;value可能是function或component
路由分类
后端路由#xff08;node#xff09;
value是function#xff0c;用来处理客户端提交的请求注册路由#xff1a;router.get(path, function(req, res))工作过程#xff1a;当…一个路由就是一个映射关系
key为路径value可能是function或component
路由分类
后端路由node
value是function用来处理客户端提交的请求注册路由router.get(path, function(req, res))工作过程当node接收到一个请求时根据请求路径找到匹配路由调用路由中的函数来处理请求返回响应参数
前端路由
value是component用于展示页面内容注册路由Route path/home element{Home /} 工作过程当浏览器的path变为home时当前路由组件就会变成Home组件
与React Router 5.x 版本相比的改变
内置组件的变化移除Switch/ 新增 Routes/等。语法的变化component{About} 变为 element{About/}等。新增多个hookuseState、useParams、useNavigate、useMatch等。
官方明确推荐函数式组件 …
React Router 6.x 相关API
1. BrowserRouter
说明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)
);2. HashRouter
说明 作用与BrowserRouter一样但HashRouter修改的是地址栏的hash值。 备注 6.x版本中HashRouter、BrowserRouter 的用法与 5.x 相同。
3. Routes/ 与 Route/
v6版本中移出了先前的Switch引入了新的替代者Routes。Routes 和 Route要配合使用且必须要用Routes包裹Route。Route 相当于一个 if 语句如果其路径与当前 URL 匹配则呈现其对应的组件。Route caseSensitive 属性用于指定匹配时是否区分大小写默认为 false。当URL发生变化时Routes 都会查看其所有子 Route 元素以找到最佳匹配并呈现组件 。Route 也可以嵌套使用且可配合useRoutes()配置 “路由表” 但需要通过 Outlet 组件来渲染其子路由。
import Home from ./pages/home;
import About from ./pages/about;
// V5
Route path/home component{Home} /
Route path/about component{About} /// V6
RoutesRoute path/home element{Home /} /Route path/about element{About /} /
/Routes4. Link
作用: 修改URL且不发送网络请求路由链接。
注意: 外侧需要用BrowserRouter或HashRouter包裹。
示例代码
import { Link } from react-router-dom;function Test() {return (divLink to/路径按钮/Link/div);
}5. NavLink
作用: 与Link组件类似且可实现导航的“高亮”效果。
示例代码
// 注意: NavLink默认类名是active下面是指定自定义的class//自定义样式
NavLinktologinclassName{({ isActive }) {console.log(home, isActive)return isActive ? base one : base}}
login/NavLink/*默认情况下当Home的子组件匹配成功Home的导航也会高亮当NavLink上添加了end属性后若Home的子组件匹配成功则Home的导航没有高亮效果。
*/
NavLink tohome end home/NavLink以下是 NavLink 组件的一些关键属性
to指定链接的目标地址这与 a 标签的 href 属性类似。end当设置为 true 时表示这个链接的目标地址是精确匹配的。如果没有设置 end 或者设置为 false则 NavLink会匹配任何以 to 属性值开始的路由路径。activeClassName当链接处于激活状态时可以指定一个类名来改变其样式。exact与 end 属性作用相同用于精确匹配路由。
6. Navigate
作用 1、只要Navigate组件被渲染就会修改路径切换视图。
2、replace属性用于控制跳转模式push 或 replace默认是push。
3、示例代码
import React,{useState} from react
import {Navigate} from react-router-domexport default function Home() {const [sum,setSum] useState(1)return (divh3我是Home的内容/h3{/* 根据sum的值决定是否切换视图 */}{sum 1 ? h4sum的值为{sum}/h4 : Navigate to/about replace{true}/}button onClick{()setSum(2)}点我将sum变为2/button/div)
}7. Outlet
当Route产生嵌套时渲染其对应的后续子路由。
示例代码
//根据路由表生成对应的路由规则
const element useRoutes([{path:/about,element:About/},{path:/home,element:Home/,children:[{path:news,element:News/},{path:message,element:Message/,}]}
])//Home.js
import React from react
import {NavLink,Outlet} from react-router-domexport default function Home() {return (divh2Home组件内容/h2divul classNamenav nav-tabsliNavLink classNamelist-group-item tonewsNews/NavLink/liliNavLink classNamelist-group-item tomessageMessage/NavLink/li/ul{/* 指定路由组件呈现的位置 */}Outlet //div/div)
}Hooks
1、useState()
import React, { useState } from react;function Bulbs() {const [on, setOn] useState(false);const lightSwitch () setOn(on !on);return (div className{on ? bulb-on : bulb-off} /button onClick{lightSwitch}开/关/button/);
}2、useRoutes()
作用根据路由表动态创建Routes和Route。
示例代码
//路由表配置src/routes/index.js
import About from ../pages/About
import Home from ../pages/Home
import {Navigate} from react-router-domexport default [{path:/about,element:About/},{path:/home,element:Home/},{path:/,element:Navigate to/about/}
]//App.jsx
import React from react
import {NavLink,useRoutes} from react-router-dom
import routes from ./routesexport default function App() {//根据路由表生成对应的路由规则const element useRoutes(routes)return (div......{/* 注册路由 */}{element}....../div)
}3、useNavigate()
作用返回一个函数用来实现编程式导航。
示例代码
import React from react
import {useNavigate} from react-router-domexport default function Demo() {const navigate useNavigate()const handle () {//第一种使用方式指定具体的路径navigate(/login, {replace: false,state: {a:1, b:2}}) //第二种使用方式传入数值进行前进或后退类似于5.x中的 history.go()方法navigate(-1)}return (divbutton onClick{handle}按钮/button/div)
}4、useParams()
示例代码 假设现有App路由
function App() {return (RoutesRoute pathuser element{Users /}Route path:id element{UserDetail /} /Route pathcreate element{NewUser /} //Route/Routes);
}那么在UserDetail内部需要用useParams来获取对应的参数
import { useParams } from react-router-dom;export default function UserDetail() {let params useParams();return h2User: {params.id}/h2;
}5、useSearchParams()
1、作用用于读取和修改当前位置的 URL 中的查询字符串。
2、返回一个包含两个值的数组内容分别为当前的search参数、更新search的函数。
示例代码
import React from react
import {useSearchParams} from react-router-domexport default function Detail() {const [search,setSearch] useSearchParams()const id search.get(id)const title search.get(title)const content search.get(content)return (ullibutton onClick{()setSearch(id008title哈哈content嘻嘻)}点我更新一下收到的search参数/button/lili消息编号{id}/lili消息标题{title}/lili消息内容{content}/li/ul)
}6、useLocation()
作用 获取当前 location 信息对标5.x中的路由组件的location属性。
示例代码
import React from react
import {useLocation} from react-router-domexport default function Detail() {const x useLocation()console.log(,x)// x就是location对象: /*{hash: ,key: ah9nv6sz,pathname: /login,search: ?namezsage18,state: {a: 1, b: 2}}*/return (ulli消息编号{对应id}/lili消息标题{对应标题}/lili消息内容{对应内容}/li/ul)
}7、useMatch()
作用 返回当前匹配信息对标5.x中的路由组件的match属性。 示例代码
Route path/login/:page/:pageSize element{Login /}/
NavLink to/login/1/10登录/NavLink//Login组件
export default function Login() {const match useMatch(/login/:x/:y)console.log(match) //输出match对象//match对象内容如下/*{params: {x: 1, y: 10}pathname: /LoGin/1/10 pathnameBase: /LoGin/1/10pattern: {path: /login/:x/:y, caseSensitive: false, end: false}}*/return (divh1Login/h1/div)
}8、useInRouterContext()
作用如果组件在 Router 的上下文中呈现则 useInRouterContext 钩子返回 true否则返回 false。
9、useOutlet()
作用 用来呈现当前组件中渲染的嵌套路由。
示例代码
const result useOutlet()
console.log(result)
// 如果嵌套路由没有挂载,则result为null
// 如果嵌套路由已经挂载,则展示嵌套的路由对象10、useResolvedPath()
作用 给定一个 URL值解析其中的path、search、hash值。 文章转载自: http://www.morning.mzskr.cn.gov.cn.mzskr.cn http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn http://www.morning.kjgrg.cn.gov.cn.kjgrg.cn http://www.morning.fjglf.cn.gov.cn.fjglf.cn http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn http://www.morning.bgqr.cn.gov.cn.bgqr.cn http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn http://www.morning.wklrz.cn.gov.cn.wklrz.cn http://www.morning.ctxt.cn.gov.cn.ctxt.cn http://www.morning.nrcbx.cn.gov.cn.nrcbx.cn http://www.morning.gjssk.cn.gov.cn.gjssk.cn http://www.morning.hnkkm.cn.gov.cn.hnkkm.cn http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn http://www.morning.kjmcq.cn.gov.cn.kjmcq.cn http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn http://www.morning.hyjpl.cn.gov.cn.hyjpl.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn http://www.morning.hmxrs.cn.gov.cn.hmxrs.cn http://www.morning.qftzk.cn.gov.cn.qftzk.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.pqypt.cn.gov.cn.pqypt.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.dwztj.cn.gov.cn.dwztj.cn http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn http://www.morning.dhdzz.cn.gov.cn.dhdzz.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.wypyl.cn.gov.cn.wypyl.cn http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.rhpy.cn.gov.cn.rhpy.cn http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.qgqck.cn.gov.cn.qgqck.cn http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn http://www.morning.ypdhl.cn.gov.cn.ypdhl.cn http://www.morning.xsctd.cn.gov.cn.xsctd.cn http://www.morning.xqwq.cn.gov.cn.xqwq.cn http://www.morning.qlck.cn.gov.cn.qlck.cn http://www.morning.mzkn.cn.gov.cn.mzkn.cn http://www.morning.cttti.com.gov.cn.cttti.com http://www.morning.ltspm.cn.gov.cn.ltspm.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.dljujia.com.gov.cn.dljujia.com http://www.morning.cgthq.cn.gov.cn.cgthq.cn http://www.morning.kjxgc.cn.gov.cn.kjxgc.cn http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn http://www.morning.wwdlg.cn.gov.cn.wwdlg.cn http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn http://www.morning.mlnbd.cn.gov.cn.mlnbd.cn http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.rnmc.cn.gov.cn.rnmc.cn http://www.morning.hxbps.cn.gov.cn.hxbps.cn http://www.morning.dblgm.cn.gov.cn.dblgm.cn http://www.morning.nslwj.cn.gov.cn.nslwj.cn http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn http://www.morning.ghwtn.cn.gov.cn.ghwtn.cn http://www.morning.zrqs.cn.gov.cn.zrqs.cn http://www.morning.daidudu.com.gov.cn.daidudu.com http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn http://www.morning.yrpg.cn.gov.cn.yrpg.cn http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn http://www.morning.hnmbq.cn.gov.cn.hnmbq.cn http://www.morning.jfnlj.cn.gov.cn.jfnlj.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.ndrzq.cn.gov.cn.ndrzq.cn http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn http://www.morning.fhsgw.cn.gov.cn.fhsgw.cn http://www.morning.llmhq.cn.gov.cn.llmhq.cn http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.wbyqy.cn.gov.cn.wbyqy.cn http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.dhqzc.cn.gov.cn.dhqzc.cn http://www.morning.kpzrf.cn.gov.cn.kpzrf.cn