当前位置: 首页 > news >正文

做网站可以卖钱吗开源cms下载

做网站可以卖钱吗,开源cms下载,网站建设公司教程,搭建一个官网需要多少钱React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置 一、实现手动跳转路由 利用 useNavigate 封装一个 withRouter#xff08;hoc/with_router.js#xff09; import { useNavigate } from react-router-dom; // 封装一个高阶组件 function withRou…React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置 一、实现手动跳转路由 利用 useNavigate 封装一个 withRouterhoc/with_router.js import { useNavigate } from react-router-dom; // 封装一个高阶组件 function withRouter(WrapperComponent) {return function (props) {const navigate useNavigate();const router { navigate };return WrapperComponent {...props} router{router} /;}; }export default withRouter;添加到hoc/index.js文件中 import withRouter from ./with_router; export { withRouter };利用withRouter拦截Home组件实现手动跳转路由 import React, { PureComponent } from react; import { Link, Outlet } from react-router-dom; import { withRouter } from ../hoc;export class Home extends PureComponent {navigateTo(path) {const { navigate } this.props.router;navigate(path);}render() {return (divh1Home/h1div classNamenavLink to/home/recommend推荐/LinkLink to/home/ranking排行榜/Linkbutton onClick{(e) this.navigateTo(/home/songmenu)}歌单/button/div{/* 占位组件 */}Outlet //div);} }export default withRouter(Home); 二、路由参数传递 路由参数传递包括1.动态路由传参2.查询字符串传参 改造withRouter通过useParams()和useSearchParams()来接收两种参数传递 import {useLocation,useNavigate,useParams,useSearchParams, } from react-router-dom; // 封装一个高阶组件 function withRouter(WrapperComponent) {return function (props) {// 1.导航const navigate useNavigate();// 2.动态路由参数const params useParams();// 3.查询字符串的参数/user?nametestage18const location useLocation();const [searchParams] useSearchParams();const query Object.fromEntries(searchParams)console.log(query);const router { navigate, params, location, query };return WrapperComponent {...props} router{router} /;}; }export default withRouter; 在界面中通过params来接收Detail.js import React, { PureComponent } from react; import { withRouter } from ../hoc;export class Detail extends PureComponent {render() {const { router } this.props;const { params } router;return (divh2Detail/h2h2id:{params.id}/h2/div);} }export default withRouter(Detail); 通过 query 来接收User.jsx import React, { PureComponent } from react; import { withRouter } from ../hoc;export class User extends PureComponent {render() {const { router } this.props;const { query } router;return (divh1用户:{query.name} - {query.age}/h1/div);} }export default withRouter(User); 三、路由配置文件 当前App.jsx文件中包含Routes相关信息过于臃肿我们可以将Routes通过配置的形式进行引入。 构建router/index.js将所有的路由配置在此处: import Home from ../pages/Home; import About from ../pages/About; import Login from ../pages/Login; import NotFound from ../pages/NotFound; import HomeRecommend from ../pages/HomeRecommend; import HomeRanking from ../pages/HomeRanking; import Category from ../pages/Category; import Order from ../pages/Order; import HomeSangMenu from ../pages/HomeSangMenu; import Detail from ../pages/Detail; import User from ../pages/User; import { Navigate } from react-router-dom;const routes [{path: /,element: Navigate to/home /,},{path: /home,element: Home /,children: [{path: /home,element: Navigate to/home/recommend /,},{path: /home/recommend,element: HomeRecommend /,},{path: /home/ranking,element: HomeRanking /,},{path: /home/sangmenu,element: HomeSangMenu /,},],},{path: /about,element: About /,},{path: /login,element: Login /,},{path: /category,element: Category /,},{path: /order,element: Order /,},{path: /detail,element: Detail /,},{path: /user,element: User /,},{path: *,element: NotFound /,}, ]; export default routes; 改写App.jsx通过useRoutes(routes)引入路由 import React from react; import {Link,NavLink,useNavigate,useRoutes, } from react-router-dom; import ./style.css; // import Home from ./pages/Home; // import About from ./pages/About; // import Login from ./pages/Login; // import NotFound from ./pages/NotFound; // import HomeRecommend from ./pages/HomeRecommend; // import HomeRanking from ./pages/HomeRanking; // import Category from ./pages/Category; // import Order from ./pages/Order; // import HomeSangMenu from ./pages/HomeSangMenu; // import Detail from ./pages/Detail; // import User from ./pages/User; import routes from ./router;export function App(props) {const navigate useNavigate();function navigateTo(path) {console.log(path);navigate(path);}return (div classNameappdiv classNameheaderspanheader/spandiv classNamenavNavLink to/home首页/NavLinkNavLink to/about关于/NavLinkNavLink to/login登陆/NavLinkbutton onClick{(e) navigateTo(/category)}分类/buttonspan onClick{(e) navigateTo(/order )}订单/spanLink to/user?nametestage18用户/Link/divhr //divdiv classNamecontent{/* 映射关系 path Component */}{/* RoutesRoute path/ element{Navigate to/home /} /Route path/home element{Home /}Route path/home element{Navigate to/home/recommend /} /Route path/home/recommend element{HomeRecommend /} /Route path/home/ranking element{HomeRanking /} /Route path/home/songmenu element{HomeSangMenu /} //RouteRoute path/about element{About /} /Route path/login element{Login /} /Route path/category element{Category /} /Route path/order element{Order /} /Route path/detail/:id element{Detail /} /Route path/user element{User /} /Route path* element{NotFound /} //Routes */}{useRoutes(routes)}/divdiv classNamefooterFooter/div/div); }export default App; 查看运行效果与之前保持一致 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AByH8LHr-1690721021332)(https://gitee.com/outmanm78/markdown-image/raw/master/img/202307302029353.png)] 虽然成功抽离了路由配置信息但是目前的方式会导致路由统一打包没有分包处理。我们可以进行改造一下针对部分配置进行分包处理实现路由懒加载 import React from react; import Home from ../pages/Home; // import About from ../pages/About; // import Login from ../pages/Login; import NotFound from ../pages/NotFound; import HomeRecommend from ../pages/HomeRecommend; import HomeRanking from ../pages/HomeRanking; import Category from ../pages/Category; import Order from ../pages/Order; import HomeSangMenu from ../pages/HomeSangMenu; import Detail from ../pages/Detail; import User from ../pages/User; import { Navigate } from react-router-dom;// 通过React.lazy实现About和Login界面的路由懒加载 const About React.lazy(() import(../pages/About)); const Login React.lazy(() import(../pages/Login));在src/index.js中用Suspense对App进行包裹实现对分包加载的等待 import React, { Suspense } from react; import ReactDOM from react-dom/client; import App from ./App; import { HashRouter } from react-router-dom;const root ReactDOM.createRoot(document.getElementById(root)); root.render(React.StrictModeHashRouterSuspense fallback{h3Loading.../h3}App //Suspense/HashRouter/React.StrictMode ); 查看效果与之前保持一致懒加载实现成功
http://www.hkea.cn/news/14553795/

相关文章:

  • 兰州网站建设论坛网站建设公司教程
  • 美橙互联建站黄页网站怎么做 获取企业信息
  • 坪山网站建设特色可制作网页的软件
  • 情感视频素材网站网页制作视频教程下载
  • 网站建设布局品牌官网设计
  • 网站开发课程软件专业的教育行业网站制作
  • 网站开发技术 北京自己如何申请域名
  • 烟台做网站建设产品销售型企业网站有哪些
  • 注册了域名怎么做网站深圳住房建设局网站申报
  • 微网站分销做百度糯米网站的团队
  • 广西人才市场职称网长沙网站seo优化排名
  • 淮南家政网站建设地址宁波哪里做网站
  • 网站做推广要备案吗青岛网站制作推广
  • 做微页的网站wordpress 上传主题 ftp
  • 玉林市城市建设投资有限公司网站外网服务器地址ip免费
  • 浅谈电子商务网站建设与管理网站开发公司前台模板
  • 阿里巴巴是搭建的网站吗网站模板开发
  • 建站之星好不好全网优化推广
  • 可以做自媒体的网站青岛做门户网站公司
  • 旅游景区网站建设方案文档云游戏平台
  • 免费推广网站都有哪些如何建设微网站
  • 建设工程有限公司 网站app开发公司图片
  • 网站后续建设定制设计网站公司
  • 北京网站改版多少钱湛江设计公司
  • 如何给网站做备份wordpress主题windows
  • 网站建设课程设计实验报告黄骅打牌吧
  • 重庆网站建设培训班马云1688网站在濮阳如何做
  • wordpress如何建立网站网站团购功能怎么做
  • 网站建设规划书范文5000字公众号开发周期
  • 做外贸没有网站需要注意什么条件wordpress企业官网主题