当前位置: 首页 > 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.mmbaike.com/news/79716.html

相关文章:

  • 网站空间租用多少钱百度推广客户端mac版
  • 常用博客建站程序网络营销策划公司
  • 南阳做网站优化公司哈尔滨关键词优化方式
  • 单页面网站如何优化引流网站的seo
  • 网站开发全程实例竞价托管推广公司
  • 西安网站建设云速网络谷歌广告联盟一个月能赚多少
  • 做网站webform mvcseo点击排名源码
  • 南通企业自助建站搜索引擎排名查询
  • 网站域名备案注册证书如何在国外推广自己的网站
  • 做网站域名备案需要多久上海比较好的seo公司
  • 广州建设网站是什么北京seo课程
  • 多语言网站怎么做南阳seo
  • 阿里巴巴怎么做不花钱的网站南京百度seo
  • 网站建设报告书范文seo外链专员工作要求
  • 新手设计师接单网站百度百家
  • 秦皇岛专业做网站微信小程序开发详细步骤
  • 企业网站 流程100%上热门文案
  • 成都网站建设快速服务seo点击排名工具
  • 创办一家公司需要多少钱网站优化联系
  • 凡客做网站怎么样信息流优化师没经验可以做吗
  • 拓吧网站深圳刚刚突然宣布
  • 华强北做电子网站建设创量广告投放平台
  • 做网站难学吗bt磁力种子搜索引擎
  • 网站建设在实际工作中的意义seo公司怎么样
  • 网站定制建设会计培训班的费用是多少
  • 新城免费做网站2023年的新闻十条
  • 视频号推广平台seo外包公司哪家好
  • 简易静态网站制作流程图常用的关键词有哪些
  • 个人音乐网站建设长尾关键词挖掘工具爱网站
  • 合肥外贸网站推广合肥百度关键词推广