試著用React寫項目-利用react-router解決跳轉(zhuǎn)路由等問題(二)

轉(zhuǎn)載請注明出處:王亟亟的大牛之路

這一篇還是繼續(xù)寫react router相關(guān)的內(nèi)容兼蜈,廢話之前先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android (總有你需要的東西)


上一篇講到我們可以利用 Router來實現(xiàn)嵌套跳轉(zhuǎn)等效果,但是那些都是靜態(tài)的,這一篇著重于寫一些動態(tài)跳轉(zhuǎn)內(nèi)容

Link

之前也有提及,舊時代我們常用的跳轉(zhuǎn)形式就是<a/>,React豐富的api也提供給我們類似的實現(xiàn)杖小,那就是Link,我們用一個例子來看一下這玩意怎么用

他也是react-router包里的一部分睬魂,先 import

import { Link } from 'react-router'

然后就可以正常使用了,像這樣

import React from 'react'
import { Link } from 'react-router'

export default React.createClass({
  render() {
    return (
      <div>
        <h1>React Router Tutorial</h1>
        <ul role="nav">
          <Link to="/Three">Three</Link><br></br>
          <Link to="/Three">Three</Link>
        </ul>
      </div>
    )
  }
})

效果如下


這里寫圖片描述

當(dāng)然烛愧,之前注冊的<Route>不能少,不然無法進(jìn)行跳轉(zhuǎn)

main.js的片段

  <Route path="/Three" component={Three}/>
  <Route path="/Two" component={Two}/>

activeStyle activeClassName

activeStyle 可以幫我們改變鏈接的樣式掂碱,使用簡單配一個屬性即可怜姿,像這樣

<Link to="/Two" activeStyle={{color: 'red'}}>Two</Link>

上面代碼中,當(dāng)前頁面的鏈接會紅色顯示

還有個字段是activeClassName 指定當(dāng)前路由的Class

像這樣

<Link {...this.props} activeClassName="active"/>

那既然 類似的使用場景很多疼燥,為何不封裝一個組件沧卢,方便調(diào)用?

ok,我們新建一層目錄醉者,像這樣

這里寫圖片描述

里面放一個專門處理跳轉(zhuǎn)的NavLink.js對<Link>進(jìn)行一些簡單的封裝

import React from 'react';
import { Link } from 'react-router';

export default React.createClass({
  render() {
    return (<Link {...this.props} activeClassName="active"/>)
  }
})

非常簡單讓我們能傳參但狭,統(tǒng)一設(shè)置activeClassName披诗,當(dāng)然你想自定義怎么都可以


URL Params

有些時候我們會碰到一些很像但又不是完全不同的路由,像這樣

/Three/haha
/Three/haha/haha1
/Three/hehe/hehe1

官方提供給我們一個 以: 開頭的配對形式立磁,像這樣

/Three/:haha/:haha1

我們 拿

/Three
/Three/haha

做個演示案例

因為是分層渲染呈队,所以Three/haha就要交給第三方黑暗勢力去展示,而Three還是給Three

所以我們的main.js,現(xiàn)在長這樣

import React from 'react';
import { render } from 'react-dom';
import { Router , Route , hashHistory , Link } from 'react-router';
import First from './First';
import Three from './Three';
import Two from './Two';
import Four from './Four';



render((
  <Router history={hashHistory}>
    <Route path="/" component={First}>
    </Route>
    <Route path="/Three" component={Three}/>
    <Route path="/Three/:name" component={Four}/>
    <Route path="/Two" component={Two}/>
  </Router>
), document.getElementById('app'))

Four就是我們新添加渲染的組件唱歧,內(nèi)容不用管宪摧,你得理解Three和Three/:name實質(zhì)上并不是同一個東西但是他屬于同一種匹配規(guī)則,而這規(guī)則匹配后都將被Four去渲染


Four.js

import React from 'react';

export default React.createClass({
  render(){
    return (
      <div>
         <h2>{this.props.params.name}</h2>
      </div>
    )
  }
})

這里接受一個傳遞來的name屬性颅崩,把它顯示出來几于,值是跳轉(zhuǎn)傳來的

我們讓 第三個頁面產(chǎn)生多級跳轉(zhuǎn)到,更改如下

import React from 'react';
import styled from 'styled-components';
import NavLink from './../component/nav/NavLink';

const H2 = styled.h2`
  color: #eee
`;

export default React.createClass({
  render(){
    return (
      <div>
        <h2>hi i am three</h2>
          <ul>
            <NavLink to="/Three/haha">haha</NavLink><br></br>
            <NavLink to="/Three/heihei">heihei</NavLink>
          </ul>
      </div>
    )
  }
})


先導(dǎo)包把剛才自己創(chuàng)建的主件給“摳來用“

import NavLink from './../component/nav/NavLink';

然后分別進(jìn)行路由配置挨摸,一個傳haha一個heihei,我們來看下Four有沒有相應(yīng)效果孩革,先看看Three

這里寫圖片描述

我們點一下haha

這里寫圖片描述

url,值都顯示出了我們已經(jīng)得到了傳來的haha

下一篇將是Router的完結(jié)篇,整體是從官方demo入手加以自己的理解和嘗試得运,有問題或者有疑問可以給我留言膝蜈,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熔掺,一起剝皮案震驚了整個濱河市饱搏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌置逻,老刑警劉巖推沸,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異券坞,居然都是意外死亡鬓催,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門恨锚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宇驾,“玉大人,你說我怎么就攤上這事猴伶】紊幔” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵他挎,是天一觀的道長筝尾。 經(jīng)常有香客問我,道長办桨,這世上最難降的妖魔是什么筹淫? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮呢撞,結(jié)果婚禮上贸街,老公的妹妹穿的比我還像新娘庵寞。我一直安慰自己,他們只是感情好薛匪,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脓鹃,像睡著了一般逸尖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘸右,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天娇跟,我揣著相機與錄音,去河邊找鬼太颤。 笑死苞俘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的龄章。 我是一名探鬼主播吃谣,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼做裙!你這毒婦竟也來了岗憋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤锚贱,失蹤者是張志新(化名)和其女友劉穎仔戈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拧廊,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡监徘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吧碾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰盔。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滤港,靈堂內(nèi)的尸體忽然破棺而出廊蜒,到底是詐尸還是另有隱情,我是刑警寧澤溅漾,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布山叮,位于F島的核電站,受9級特大地震影響添履,放射性物質(zhì)發(fā)生泄漏屁倔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一暮胧、第九天 我趴在偏房一處隱蔽的房頂上張望锐借。 院中可真熱鬧问麸,春花似錦、人聲如沸钞翔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽布轿。三九已至哮笆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汰扭,已是汗流浹背稠肘。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萝毛,地道東北人项阴。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像笆包,于是被迫代替她去往敵國和親环揽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

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