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

广东湛江免费做网站免费的自助建站

广东湛江免费做网站,免费的自助建站,河北建设秦皇岛分公司,郑州企业网站优化服务哪家好v5 版本既兼容了类组件(react v16.8前),又兼容了函数组件(react v16.8及以后,即hook)。v6 文档把路由组件默认接受的三个属性给移除了,若仍然使用 this.props.history.push(),此时pr…
  1. v5 版本既兼容了类组件(react v16.8前),又兼容了函数组件(react v16.8及以后,即hook)。
  2. v6 文档把路由组件默认接受的三个属性给移除了,若仍然使用 this.props.history.push(),此时props会提示空值。官方文档给出的解决方案是使用 useNavigate() 这个hook,但是 hook 只能存在于函数组件,无法用在类组件中。
  3. 使用类组件进行项目开发的,建议react-router-dom使用v5及以前的版本。如果使用函数组件开发,建议使用最新的v6版本。

文章目录

      • 1.在类组件中的用法
        • 1.1 路由跳转
        • 1.2 路由返回
        • 1.3 携带参数
          • 1.3.1 state 属性携带参数
          • 1.3.2 search 属性携带参数
          • 1.3.3 路由传参 携带参数
      • 2.在函数组件中的用法
        • 2.1 路由跳转
        • 2.2 路由返回
        • 2.3 携带参数
          • 2.3.1 state 属性携带参数
          • 2.3.2 search 属性携带参数
          • 2.3.3 路由传参 携带参数
      • 3.总结
        • 3.1 3.1 router.js 路由文件中
        • 3.2 路由跳转、传参

1.在类组件中的用法

import React from "react";
import { Router, Route, Switch, Redirect, HashRouter } from "react-router-dom";
import { createHashHistory } from "history";
...const route = () => (<HashRouter><Switch>{/* 重定向不可放在首行 */}{/* <Redirect path="*" to="/" /> */}<Route exact path="/" component={Home} /><Route exact path="/listPage" component={ListPage} /><Route exact path="/detailPage/:id" component={DetailPage} />{/* 其他匹配重定向 */}<Redirect path="*" to="/" /></Switch></HashRouter>
);export default route;

注意: 和 的区别 ==> 似乎没有区别

1.1 路由跳转
this.props.history.push('/listPage'): 路由入栈
this.props.history.replace('/listPage'):路由替换
1.2 路由返回
this.props.history.goBack(): 返回上一级路由
1.3 携带参数
1.3.1 state 属性携带参数

http://localhost:3000/#/listPage

this.props.history.push({pathname: '/listPage',state: {aaa: 123},
});
// 跳转后新页面 通过 this.props.history.location.state 获取
// http://localhost:3000/#/listPage
1.3.2 search 属性携带参数

·http://localhost:3000/#/listPage?bbb=456

this.props.history.push({pathname: '/listPage',search: '?bbb=456',
});
// 跳转后新页面 通过 this.props.history.location.search 获取
// url: http://localhost:3000/#/listPage?bbb=456
1.3.3 路由传参 携带参数

http://localhost:3000/#/detailPage/789

this.props.history.push({pathname: '/detailPage' + '/' + id,
});
// 需要router.js 中路由配合: <Route exact path="/detailPage/:id" component={DetailPage} />
// 跳转后新页面 通过this.props.match.params.id 获取
// url: http://localhost:3000/#/detailPage/789

2.在函数组件中的用法

import React from "react";
import { HashRouter, Route, Routes, Navigate } from "react-router-dom";
...const route = () => (<HashRouter><Routes><Route exact path="/" element={<Home />} /><Route exact path="/listPage" element={<ListPage />} /><Route exact path="/detailPage/:id" element={<DetailPage />} /><Route exact path="*" element={<Navigate to="/" />} />{/* <Route exact path="*" element={<NotFound />} /> */}</Routes></HashRouter>
);export default route;
  1. Routes 替换了 Switch。
  2. Route中 element 替换了 component/render 属性,且值是组件,而非组件名。
  3. Navigate 组件替换了 Redirect。
2.1 路由跳转
 import { useNavigate } from 'react-router-dom';const navigate = useNavigate();// pushnavigate(path);// replacenavigate(path, {replace: true});
2.2 路由返回
 const navigate = useNavigate();// go backnavigate(-1);
2.3 携带参数
2.3.1 state 属性携带参数

http://localhost:3000/#/listPage

 const navigate = useNavigate();navigate('/listPage', {state: {aaa: '123',}})// url: http://localhost:3000/#/listPage
2.3.2 search 属性携带参数

http://localhost:3000/#/listPage?bbb=456

 const navigate = useNavigate();navigate('/listPage' + '?bbb=456')// url: http://localhost:3000/#/listPage?bbb=456
2.3.3 路由传参 携带参数

http://localhost:3000/#/listPage/456

 const navigate = useNavigate();navigate('/detailPage' + '/' + id)
// 需要router.js 中路由配合: <Route exact path="/detailPage/:id" element={<DetailPage />} />
// 跳转后新页面 通过 const { id } = useParams(); 获取,其中useParams 为 react-router-dom 内方法
// url: http://localhost:3000/#/detailPage/789

3.总结

3.1 3.1 router.js 路由文件中
  1. Switch 改用 Routes
  2. component/render 属性 改为 element
    <Route exact path="/listPage" element={<ListPage />} />
  3. Redirect 改用 Navigate
    <Route exact path="*" element={<Navigate to="/" />} />
3.2 路由跳转、传参
  1. history.push(path) 改为 navigate(path)
  2. history.replace(path) 改为 navigate(path, {replace: true})
  3. history.goBack() 改为 navigate(-1)
  4. v5 中的 hook 使用比较:
    -v5: 使用 useHistory 的 history.push()
    -v6: 使用 useNavigate 的 navigate()
http://www.qdjiajiao.com/news/7593.html

相关文章:

  • Dedecms手机网站源码企业推广
  • 珠海logo设计seo收索引擎优化
  • 动漫设计与制作属于计算机类吗快照关键词优化
  • 校园门户网站网页搜索引擎大全
  • 做网站代码保密协议搜索引擎推广的基本方法有
  • 直播源码下载seo方法图片
  • 中国十大网站公司排名西安百度关键词优化
  • 深圳哪里有做网站的公司手机app开发
  • dreamweaver的主要功能网站优化公司上海
  • 网站开发需求分析包括哪些方面重庆seo网络推广平台
  • 可以做关键词优化的免费网站樱桃bt磁力天堂
  • 呼市网站制作招聘网站模板库
  • 外包网站开发安全吗武汉seo排名优化公司
  • 网站icon怎么做的seo关键词推广多少钱
  • 莱芜手机网站建设报价电商运营培训课程有哪些
  • 做音频主播的网站百度seo优化方法
  • wordpress sqllite免费seo
  • 赛马软件网站开发找客户资源的网站
  • 广告设计公司技术天津seo外包团队
  • 为什么网站打不开首页搜索引擎优化关键词
  • 网站设计收集线上营销活动主要有哪些
  • 网站建设详细教程视频app线下推广怎么做
  • h5css3网站开发实例seo如何优化
  • 天津做网站找哪家公司好网站推广优化的原因
  • 做网站用什么网最好太原最新情况
  • 网站开发整体流程seo 0xu
  • 网站商城注意事项网站营销策略有哪些
  • 做一个商城网站多少钱网站优化建议
  • 网站多级导航效果网站快速收录工具
  • 建设网站的企业哪家好常见的推广方式