张加刘结发妻子张靓颖 發表於 2019-12-25 15:12:00

React中路由的基本使用

<p><strong><span style="font-size: 16px">1、React路由介绍</span></strong></p>
<p><strong><span style="font-size: 16px"> </span></strong>现在我们来搞一搞React中的路由吧,别问我为什么这木喜欢用搞这个字,因为它比较深奥。</p>
<p>&nbsp; &nbsp; 注意下面我们使用的是React-Router-DOM</p>
<p>&nbsp; &nbsp; React中的路由基本使用还是满简单的,零碎的小东西有点多,所以我直接把他们揉到一起做了一个小例子,代码我都写上注释了,应该挺简单易懂的</p>
<p>&nbsp; &nbsp;&nbsp;<span style="color: rgba(255, 0, 0, 1)">注意:以下所有操作均运行在搭好的React环境中</span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="font-size: 16px"><strong>2、</strong></span><strong><span style="font-size: 16px">安装react-router-dom</span></strong></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">&nbsp; &nbsp; 在项目命令行中,执行</span><strong><code>cnpm install react-router-dom -S</code></strong><span class="md-plain">下载到生产环境的依赖中。</span></p>
<p class="md-end-block md-p"><span class="md-plain">&nbsp; &nbsp; 在组件中通过对象的解构方式去获取到<code>react-router-dom</code><span class="md-plain md-expand">内置组件,在&nbsp; &nbsp; &nbsp;组件中,按需引入内置组件,在页面中进行使用:</span></span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-plain md-expand"><span style="font-size: 16px"><strong>3、关于组件的区别</strong></span><br></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-plain md-expand"><span style="font-size: 16px"><strong> </strong></span></span></span><span class="md-plain"><span class="md-plain md-expand">HashRouter表示一个路由的根容器,将来所有的路由相关的东西,都要包裹在HashRouter里面,而且一个网站中,只需要使用一次HashRouter就好了;</span></span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-plain md-expand">&nbsp; &nbsp; Route表示一个路由规则,在Route上,有两个比较重要的属性,path,component</span></span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-plain md-expand">&nbsp; &nbsp; Link则表示一个路由的链接</span></span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-plain md-expand">&nbsp; &nbsp;<img src="https://img2018.cnblogs.com/common/1899486/201912/1899486-20191225144709307-1427426292.png"></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"><span class="md-plain md-expand" style="font-size: 16px"><strong>4、</strong></span></span><span style="font-size: 16px"><strong>仿照官网来个小案例(声明式路由)</strong></span></p>
<p class="md-end-block md-p"><span style="font-size: 16px"><strong>&nbsp; </strong></span><strong>&nbsp;4.1、</strong>创建一个新的Baokuo.js文件,并在index.js中导入这个路由文件</p>
<p class="md-end-block md-p"><img src="https://img2018.cnblogs.com/common/1899486/201912/1899486-20191225145015304-251292360.png"></p>
<p class="md-end-block md-p"><strong>&nbsp; &nbsp; 4.2、</strong>创建好要跳转的页面</p>
<p class="md-end-block md-p"><img src="https://img2018.cnblogs.com/common/1899486/201912/1899486-20191225145123411-1412958066.png"></p>
<p class="md-end-block md-p"><strong>&nbsp; &nbsp; &nbsp;4.3、</strong>在Baokuo.js文件中粘贴官方的第一个路由案例;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> import React <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> import Home <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./penter/Home</span><span style="color: rgba(128, 0, 0, 1)">'   //因为在一个文件夹下面创建的,所以要找到准确位置。</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> import Text <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./penter/Text</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> import Hellow <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./penter/Hellow</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> import {BrowserRouter,HashRouter,Route,Link} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react-router-dom</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> import {Button,DatePicker,Icon} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">antd</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> import <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">antd/dist/antd.css</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Baokuo extends React.Component{
</span><span style="color: rgba(0, 128, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">    render(){
</span><span style="color: rgba(0, 128, 128, 1)">12</span>      
<span style="color: rgba(0, 128, 128, 1)">13</span>         <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
</span><span style="color: rgba(0, 128, 128, 1)">14</span>               <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 根容器</span>
<span style="color: rgba(0, 128, 128, 1)">15</span>               &lt;HashRouter&gt;
<span style="color: rgba(0, 128, 128, 1)">16</span>               &lt;div&gt;
<span style="color: rgba(0, 128, 128, 1)">17</span>                     &lt;h1&gt;这是根目录&lt;/h1&gt;
<span style="color: rgba(0, 128, 128, 1)">18</span>                     &lt;hr/&gt;
<span style="color: rgba(0, 128, 128, 1)">19</span>                     {<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 链接 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">20</span>                  &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/home</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;首页&lt;/Link&gt;&amp;nbsp;&amp;<span style="color: rgba(0, 0, 0, 1)">nbsp;
</span><span style="color: rgba(0, 128, 128, 1)">21</span>                  &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/text</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;新闻&lt;/Link&gt;&amp;nbsp;&amp;<span style="color: rgba(0, 0, 0, 1)">nbsp;
</span><span style="color: rgba(0, 128, 128, 1)">22</span>                  &lt;Link to=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/hellow</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;关于我们&lt;/Link&gt;
<span style="color: rgba(0, 128, 128, 1)">23</span>                     &lt;hr/&gt;
<span style="color: rgba(0, 128, 128, 1)">24</span>                     {<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 路由规则,Route是配置路由的规则,同时也是一个占位符 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">25</span>                     &lt;Route path=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/home</span><span style="color: rgba(128, 0, 0, 1)">"</span> component={Home} /&gt;
<span style="color: rgba(0, 128, 128, 1)">26</span>                     &lt;hr/&gt;
<span style="color: rgba(0, 128, 128, 1)">27</span>                     &lt;Route path=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/text</span><span style="color: rgba(128, 0, 0, 1)">"</span>component={Text}&gt;&lt;/Route&gt;
<span style="color: rgba(0, 128, 128, 1)">28</span>                     &lt;hr/&gt;
<span style="color: rgba(0, 128, 128, 1)">29</span>                     &lt;Route path=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/hellow</span><span style="color: rgba(128, 0, 0, 1)">"</span> component={Hellow}&gt;&lt;/Route&gt;
<span style="color: rgba(0, 128, 128, 1)">30</span>               &lt;/div&gt;
<span style="color: rgba(0, 128, 128, 1)">31</span>               {<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> &lt;DatePicker&gt;&lt;/DatePicker&gt;&lt;Button type="primary" icon="twitter"&gt;点击&lt;/Button&gt; </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">32</span>               &lt;/HashRouter&gt;
<span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 0, 1)">      );
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">36</span>
<span style="color: rgba(0, 128, 128, 1)">37</span> export <span style="color: rgba(0, 0, 255, 1)">default</span> Baokuo;</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">总体的步骤分为三步:
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">配置路由的容器Router;
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">配置路由的连接LInk;
</span><span style="color: rgba(0, 128, 128, 1)">4</span> 配置路由填充的位置以及路径和组件的映射关系;:</pre>
</div>
<p><strong><span style="font-size: 16px">5、嵌套路由</span></strong></p>
<p>&nbsp; &nbsp;详细可见https://blog.csdn.net/xiaodi520520/article/details/93336215&nbsp;讲解的比较清楚</p>
<p>&nbsp; <strong>5.1、</strong>嵌套路由的步骤</p>
<p>&nbsp; &nbsp; a.在父路由的组件中配置子路由;</p>
<p>&nbsp; &nbsp; b.子路由中同样需要配置Link和Route;</p>
<p><span style="font-size: 16px"><strong>6、带参数路由和获取参数;</strong></span></p>
<p>方式:在路由的路径中通过[:参数名称]来进行传递,改参数在路由匹配的组件中通过来获取。<br>英文官网案例:</p>
<p><img src="https://img2018.cnblogs.com/common/1899486/201912/1899486-20191225150931816-1166246182.png"></p>
<p><span style="color: rgba(171, 178, 191, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(40, 44, 52, 1)">&nbsp;</span></p><br><br>
来源:https://www.cnblogs.com/haiyang-/p/12096802.html
頁: [1]
查看完整版本: React中路由的基本使用