我的一个react路由之旅(步骤及详图)

今天开始react一个重要部分的xiao~习,路由~(过程截图,最后附代码)

以下代码只能骗糊涂蛋子,没错,就是我自己,不要打算让我敲出多高级的东西~

理论性知识几乎没有,请不要打算让我给你说原理啥的,原理性的东西,网上很多,我现在搬砖学习很开心,勿忘初心~

(1)首先,你确定你安装了react环境,这第一步难度系数1,菜鸟级别的不演示了

(2)接下来,你要是用react路由,需要安装路由插件

1 npm install react-router-dom --save-dev //这里可以使用cnpm代替npm命令

这一步安装,你的选择很多,我是用的 vs code的终端安装的,因为不想开小窗口,嫌烦

安装成功。

(3)因为不知道我们要用到些什么,于是我就引入了很多组件。

这里我去搜索了一下模块和组件的区别,为什么叫引入组件而不是模块

组件是具体的:按照一些小功能的通用性和可复用性来抽象组件
组件化更多的关注UI部分,比如用户看到的弹出框,页脚,确认按钮等,这些组件可以组合成新的组件,又可以和其他组件组合组合成新的组件

模块是抽象的:按照项目业务划分的大模块
模块化侧重于数据的封装,一组相关的组件定义成一个模块,一个json对象可以是一个模块。

这里只谈区别,因为用词的精确性问题,程序员应该有一种对逻辑和正确性 ‘咬文嚼字’ 的态度。

引入了不少的东西。。。我后面会给你解释每一个的,你先引进去。

(4)我新建了两个儿子(子文件son1和son2)在newDemo文件夹中。

我区分了他们呢,并把他们抛出。

(5)父组件引入抛出的son1和son2

运行环境,浏览器中打开显示是这样的:

图中显示了父组件的"我是个React"和引入的两个子组件的“大儿子“和”二儿子”。

黄色部分的警告:不影响砸门使用,提醒砸门引入了但是没有用的组件和模块。

(6)上面的操作只是证明引入没问题。。。哈哈哈嗝~

这是一个规规矩矩的局部路由,(友情踩坑提示,link标签的首字母记得大写)

Router大标签,套住Link和Route,注释呢,已经在图片上给你写出来了,在网页上,他是这个样子的:

右边的警告是不是少了?额,不喜欢就注释了嘛先。而你点击跳转是这样的:

(7)现在呢我们,说一下我们为什么用哈西路由(HasRouter)而不是浏览器路由(BrowserRouter)。

(Router是我们起的别名 as 的作用就是这个啦。)

首先说一下哈西路由(HasRouter)和浏览器路由(BrowserRouter):

以下解释的前提是你要懂什么叫 hash 地址,hash 地址就是指 # 号后面的 url。

假如有一个 Link 标签,点击后跳转到 /abc/def。

BrowserRouter: http://localhost:8080/abc/def
HashRouter: http://localhost:8080/#/abc/def

如果有服务器端的动态支持,建议使用 BrowserRouter,否则建议使用 HashRouter。

原因在于,如果是单纯的静态文件,假如路径从 / 切换到 /a 后,此时刷新页面,页面将无法正常访问。

因为写服务器文件还比较麻烦,因此在之后的 DEMO 中,我们将主要使用 HashRouter 而不是 BrowserRouter。

(8)现在呢,我就把BrowserRouter删掉了,Link换成NavLink

说一说Link和NavLink的区别:

<NavLink>是<Link>的一个特定版本,会在匹配上当前的url的时候给已经渲染的元素添加参数,组件的属性有

。activeClassName(string):设置选中样式,默认值为active
。activeStyle(object):当元素被选中时,为此元素添加样式
。exact(bool):为true时,只有当导致和完全匹配class和style才会应用
。strict(bool):为true时,在确定为位置是否与当前URL匹配时,将考虑位置pathname后的斜线
。isActive(func)判断链接是否激活的额外逻辑的功能

好吧,我摊牌了https://blog.csdn.net/lhjuejiang/article/details/80366839 链接给你!

看这里,我把to后面直接跟了一个路径,也是没问题的。

 (9)把son2也引进去,

现在我要试一试NavLink的选中样式了

虽然只是一个简单的样式的使用,可见其优化后用起来还是很不错的。

(10)重定向的使用Redirect

重定向,我觉得吧,分两种常用的情况。

1》进入界面你需要默认一个网址,或者默认一个局部,就是我现在的情况,直接定义到son3,但是没有son3这个模块,所以啥也不显示,但是你可以定义到其它界面

2》匹配没有那个界面的时候,转到一个404界面或者其它界面,这个比较常见,符合实际产品的开发。

(11)Switch的使用

有<Switch>标签,则其中的<Route>在路径相同的情况下,只匹配第一个,这个可以避免重复匹配;

我其他地方没有动,只改了路径,我们看效果。

只出现了一个大儿子。

如果没有Switch呢?

大儿子二儿子都蹦跶出来了。。。

(12)exact的用处,严格匹配!

看标红线的地方,然后看界面显示,这个时候没有用exact,我们进入   ‘/son1/son2‘ 时,两个组件都会加载出来。

现在我们给第一个son1加上exact!

看界面!

只加载了一个二儿子!

(13)新人的总结感言。

东西不算多,但是一个一个截图查资料,真的受益无穷,会和熟悉,对于新开发一个功能,可能区别不大,因为我们都会在网上查大量的资料,去完善,去对比,但是对于搬砖期间,熟悉可以更有效地搬砖,节约时间,从而提高效率,抽出时间去学习!

原文地址:https://www.cnblogs.com/GGbondLearn/p/12287488.html

时间: 2024-07-29 21:24:41

我的一个react路由之旅(步骤及详图)的相关文章

我的一个React路由嵌套(多级路由),路由传参之旅

在上一篇react路由之旅中,我们简单地配置了react,进行了react路由及相关知识的学习,引入以及实现一个局部跳转的功能,接下来就是深入学习路由的嵌套以及传参,这是工作中主要用要的. 我的react已经配置了redux(见我的redux之旅),所以这是在引入的插件里做的演示. 从App组件跳转到NewRoute组件(需要简单的路由跳转,点击自己预习) (1)新建一个demo: 这里使用了render方式在一个文件中模拟了多个组件的效果 代码只为讲解使用在真实开发中尽量不要这样写代码的. 这

部署React+webpack工程的步骤

# 部署React+webpack工程的步骤ps:以Mac os系统做开发环境.因为npm现在使用灰常的慢,所以我使用淘宝境像cnpm. 1,准备工作: 先确保存已经安装了node.js: 2,文件部署: (1),在终端中找到react-build项目的目录,键入cnpm init初始化一个package.json文件,该文件是存放接下来项目用的一些模块, 在终端中根据提交一步步的输入,或者可以直接新建一个package.json文件,文件内容大概如下: { "name": "

简单的说一下react路由(逆战班)

现代前端大多数都是SPA(单页面程序),也就是只有一个HTML页面的应用程序,因为它的用户体验更好,对服务器压力更小,所以更受欢迎,为了有效的使用单个页面来管理原来多页面的功能,前端路由应运而生. 前端 路由的功能:让用户从一个视图(页面)导航到另一个视图(页面)前端路由是一套映射规则,在React中,是URL路径与组件的对应关系使用React路由简单来说,就是配置路径和组件路由的基本使用步骤: 1 import React from 'react'; 2 import ReactDOM fro

自己动手写一个前端路由插件

在单页应用上,前端路由并不陌生.单页应用是指在浏览器中运行的应用,在使用期间页面不会重新加载.       基本原理:以 hash 形式(也可以使用 History API 来处理)为例,当 url 的 hash 发生改变时,触发 hashchange 注册的回调,回调中去进行不同的操作,进行不同的内容的展示.       基于hash的前端路由优点是:能兼容低版本的浏览器. history 是 HTML5 才有的新 API,可以用来操作浏览器的 session history (会话历史). 

如何架构一个 React 项目?

编程有点像搞园艺.比起竭力去对付BUG(虫子),我们更愿意把一切弄得整洁有序,以免最后落得个身在荒野丛林中.低劣的架构会拖我们的后腿,也会使得BUG更容易钻进系统里去. 想要对你的项目进行架构,方法有多种.我相信,根据你的实际情况对架构进行演进,要远比坚持一些条条框框的教条更好.接下来我将会介绍一些基础的方法以资您思考. 将所有的东西都放在一个文件中 最简单的项目可以被放到一个文件之中.而这就是我所选择的用来处理我的Webpack 配置的方法.这种方法最大的好处就是所有你需要的东西都在这一个文件

react路由配置(未完)

React路由 React推了两个版本 一个是react-router 一个是react-router-dom 个人建议使用第二个 因为他多了一个Link组件 Npm install react-router-dom 1.引入 上边两种方法都行,需要注意的是第二种,下边的便签的写成<HashRouter></HashRouter> 2.如何使用 3.路由传参 原文地址:https://www.cnblogs.com/5b4cn/p/9393527.html

React 路由

React 路由 React 推出两个版本 一个是 react-router 一个是 react-router-dom 这里使用的是 react-router-dom  因为该方法多了一个  Link 组件 1. 在创建好 React 环境的基础上 下载 react-router-dom npm install react-router-dom 2. 引入  react-router-dom 注意 :  在引入时如果第一个参数只有 HashRouter 时  那么在模板中标签名为<HashRou

创建第一个react项目

由于新项目的缘故,接触了一下React这个 Javascript 库.下面我就简单的总结一下经验以及遇到的一些问题,希望能够帮到需要的朋友. 一.安装 Node.js. 以下是我百度云盘的分享. https://pan.baidu.com/s/1ftU3mn2jN9bnOGevMdcrDg     提取码:wow3 二.安装cnpm cmd命令:npm install -g cnpm --registry=https://registry.npm.taobao.org 三.安装yarn cmd命

解决React路由URL中hash(#)部分的显示 、browserHistory打包后浏览器刷新页面出现404的问题

摘要 在React项目中,我们需要采用它的路由库React-Router来进行页面跳转,React会根据路由URL来判断是哪个页面.常见的的URL有两种显示方式,一种是hashHistory的形式,形如:localhost:3000/#/free-lesson的路由,另一种是browserHistory的形式,形如:localhost:3000/person-center的真实URL路由.在实际项目中常常用真实的URL的方式,但是该形式存在一个隐藏的问题,就是项目打包后,浏览器页面刷新会出现40