react-router實現(xiàn)路由跳轉(zhuǎn)

0. 前言

學(xué)習(xí)react是一條漫長的路懂更,但是只要我們堅持下去,再遠(yuǎn)的路也可以走到盡頭急膀。好沮协,好,好卓嫂,難喝的一碗雞湯?对荨!晨雳!哈哈行瑞,其實奸腺,我就是想說,react的東西太多了血久,可能我們學(xué)會的只是一個邊邊角角洋机,所以還要不斷的學(xué)習(xí)!Q蠡辍绷旗!


timg.jpeg

1.簡介

react-router它通過管理 URL,實現(xiàn)組件的切換和狀態(tài)的變化副砍,在開發(fā)復(fù)雜的應(yīng)用的時候幾乎肯定會用的到衔肢。

2. 怎么用react-router實現(xiàn)路由跳轉(zhuǎn)?

在這里呢豁翎!我就不說怎么配置react的項目過程了角骤,在前面的文章我已經(jīng)有說過,所以心剥,就不再演一遍了邦尊,雖然我有理,但是优烧,我也挺懶的蝉揍,不想在來一遍了,想知道怎么配置的盆友可以點擊http://www.reibang.com/p/f10babb8790d畦娄,當(dāng)然你會配置的童鞋又沾,請繞過,不會的呢熙卡,你就多費點時間看一看杖刷,看完了配置react項目,再來看怎么配置路由的驳癌。滑燃。。

一颓鲜、基本用法

react-router 安裝命令如下:
$ npm install react-router --save

當(dāng)然表窘,你通過這個指令安裝的react-router的版本是4.0版本的,因為4.0版本跟以前的版本有一些出入灾杰,如果你覺得可能會出現(xiàn)問題我們可以安裝指定的版本蚊丐,通過下面的指令制定安裝react-router 3.0版本如下:
npm install react-router@3 --save

使用時,路由器Router就是React的一個組件艳吠。

import { Router } from 'react-router';
render(<Router/>, document.getElementById('app'));

Router組件本身只是一個容器麦备,真正的我們使用路由時候要通過Route組件定義。

import { Router, Route, hashHistory } from 'react-router';

render((
  <Router history={hashHistory}>
    <Route path="/" component={App}/>
  </Router>
), document.getElementById('app'));

上面代碼中,用戶訪問根路由/(比如http://www.example.com/)凛篙,組件APP就會加載到document.getElementById('app')黍匾。
你可能還注意到,Router組件有一個參數(shù)history呛梆,它的值用hashHistory表示锐涯,路由的切換由URL的hash變化決定,即URL的#部分發(fā)生變化填物。舉例來說纹腌,用戶訪問http://www.example.com/,實際會看到的是http://www.example.com/#/滞磺。

Route組件定義了URL路徑與組件的對應(yīng)關(guān)系升薯。你可以同時使用多個Route組件。

<Router history={hashHistory}>
  <Route path="/" component={App}/>
  <Route path="/repos" component={Repos}/>
  <Route path="/about" component={About}/>
</Router>

上面代碼中击困,用戶訪問/repos(比如http://localhost:8080/#/repos)時涎劈,加載Repos組件;訪問/abouthttp://localhost:8080/#/about)時阅茶,加載About組件蛛枚。

3. 代碼實現(xiàn)

首先呢,怎么配置的文件脸哀,我是真的不說了蹦浦,你不知道怎么配置的就去看我上一篇的文章吧!F蟛洹白筹!好,開始A律恪!系馆!

一送漠、index.html

其實,index.html頁面沒多少東西由蘑,他的主要作用就是相當(dāng)于一個容器闽寡,把我們寫好的組件渲染到我們的容器里。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React Hello World</title>
</head>
<body>
    <div id = "app"></div>
    <script type="text/javascript" src = "index.js"></script>
</body>
</html>
二尼酿、main.jsx

是不是應(yīng)用到我們在上面說的那些東西

import React from 'react'
import { render } from 'react-dom'
import { Router, Route, hashHistory } from 'react-router'
import App from './modules/App'
import About from './modules/About'
import Repos from './modules/Repos'

render((
  <Router history={hashHistory}>
    <Route path="/" component={App}></Route>
    <Route path="/repos" component={Repos}></Route>
    <Route path="/about" component={About}></Route>
  </Router>
), document.getElementById('app'))
三爷狈、modules文件以及下面的文件

因為我們想看一下在網(wǎng)址發(fā)生改變的時候,內(nèi)容是不是相應(yīng)的發(fā)生改變裳擎,所以建立一個modules文件涎永,


3239FF7E-CEC8-49E1-A129-534C198693E4.png

About.js文件

import React from 'react';

class About extends React.Component {
  render() {
    return <div>About</div>
  }
}
export default About;

Repos.js文件

import React from 'react';

class Repos extends React.Component {
  render() {
    return <div>Repos</div>
  }
}
export default Repos;

App.js


import React from 'react';

class App extends React.Component {
  render() {
    return <div>Hello, React Router!</div>
  }
}
export default App;
四、看一下代碼渲染之后的效果

這里還必須得說一句,你如果看了我寫的上一篇文章羡微,那么你會發(fā)現(xiàn)其實改的東西不多谷饿,就是添加一個modules文件夾,還有就是安裝一下react-router這個路由妈倔。

好了博投,廢話不說了,看效果


GIF.gif
五盯蝴、點擊切換路由

上面的代碼幾乎不怎么改變毅哗,改變的主要是App.js文件,其他的文件不用改變捧挺,看代碼

import React from 'react'
import { Link } from 'react-router'
class App extends React.Component{
  render() {
    return (
      <div>
        <h1>React Router learning</h1>
        <ul role="nav">
          <li><Link to="/about">About</Link></li>
          <li><Link to="/repos">Repos</Link></li>
        </ul>
      </div>
    )
  }
}

export default App;

在這里我告訴你一個秘密虑绵,Link類似于之前用過的<a/>標(biāo)簽,估計你就有點懵懵懂懂的感覺了松忍。蒸殿。。

六鸣峭、看一下點擊實現(xiàn)路由切換的效果

這里呢宏所,就不廢話了,有圖有真像摊溶。爬骤。。


GIF.gif

4. 結(jié)束語

好了莫换,react-router就寫著么多吧霞玄,希望我寫的東西,能夠給正在學(xué)習(xí)react的同學(xué)一點幫助@辍?谰纭!可以點贊喊暖,分享惫企!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陵叽,隨后出現(xiàn)的幾起案子狞尔,更是在濱河造成了極大的恐慌,老刑警劉巖巩掺,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偏序,死亡現(xiàn)場離奇詭異,居然都是意外死亡胖替,警方通過查閱死者的電腦和手機研儒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門豫缨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殉摔,你說我怎么就攤上這事州胳。” “怎么了逸月?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵栓撞,是天一觀的道長。 經(jīng)常有香客問我碗硬,道長瓤湘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任恩尾,我火速辦了婚禮弛说,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翰意。我一直安慰自己木人,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布冀偶。 她就那樣靜靜地躺著醒第,像睡著了一般。 火紅的嫁衣襯著肌膚如雪进鸠。 梳的紋絲不亂的頭發(fā)上稠曼,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音客年,去河邊找鬼霞幅。 笑死,一個胖子當(dāng)著我的面吹牛量瓜,可吹牛的內(nèi)容都是我干的司恳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绍傲,長吁一口氣:“原來是場噩夢啊……” “哼抵赢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起唧取,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎划提,沒想到半個月后枫弟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡鹏往,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年淡诗,在試婚紗的時候發(fā)現(xiàn)自己被綠了骇塘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡韩容,死狀恐怖款违,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情群凶,我是刑警寧澤插爹,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站请梢,受9級特大地震影響赠尾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毅弧,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一气嫁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧够坐,春花似錦寸宵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛾坯,卻和暖如春光酣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脉课。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工救军, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倘零。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓唱遭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呈驶。 傳聞我的和親對象是個殘疾皇子拷泽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,129評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)袖瞻,斷路器司致,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Lesson11、首先確保安裝了Node.js和npm依賴包管理工具2聋迎、在git上克隆官方示例程序 git clo...
    冰_心閱讀 2,705評論 0 16
  • 上次說到了第十章脂矫,這次從這里開始,原來收留奧利弗的是一個偽君子霉晕,他教奧利弗和他的伙伴們一起上街偷東西庭再,奧利弗第一...
    Angelia小鯉魚閱讀 269評論 0 0
  • 以前上高中的時候捞奕,有一個學(xué)霸型的舍友,被我們親切的稱為“大哥”拄轻,大哥是典型的三好學(xué)生颅围,沒有缺點,如果非要找一點的話...
    東海浪盡閱讀 602評論 2 3