試着用React寫項目-利用react-router解決跳轉路由等問題(三)

轉載請註明出處:王亟亟的大牛之路

本來想一下子把路由的接下來的內容都寫完的,但是今天白天開了會,傳了些代碼打了個包,就被耽擱了 這一篇來講一下 IndexLinkonlyActiveOnIndex的一些問題

老習慣先安利一下:https://github.com/ddwhan0123/Useful-Open-Source-Android

例子的源碼都傳git了,源碼地址:https://github.com/ddwhan0123/ReactDemo

知識來源:https://github.com/reactjs/react-router-tutorial


前兩天寫了一些例子,包括普通跳轉,嵌套,帶參跳轉等等,這一篇主要來實現一個常用功能 “回到首頁“。

之前的例子裏我們通過訪問/來進入首頁

<Route path="/" component={First}></Route>

但是其實我們Main.js這個頁面他沒有頁面內容,我們一開始就進入了First.js

那麼如何讓我們的Main.js有內容呢?

可以使用IndexRoute

先來新建一個模擬的頁面

Six.js

import React from 'react';

export default React.createClass({
  render(){
    return (
      <div>
        <h3>this is Six</h3>
      </div>
    )
  }
})

也就是刷出一句話

要讓Main.js能顯示內容需要2步

1在 Main.js里加入以下內容

  <IndexRoute component={Six}/>

實質上他讓本來空空的根路徑多了一個Six組件


<First>
  <Six/>
</First>

這還不夠還需要在 First.js裏做一些修改,如下

   {this.props.children || <Six/>}

這使得<Six/>成爲了根路由的子組件,它成爲父節點的this.props.children

內容理解有差異或者錯誤大街可以給我提,原文地址:https://github.com/reactjs/react-router-tutorial/tree/master/lessons/08-index-routes


接下來我們來提一下如何做一個返回頁,最簡單的方式是,寫一個路由鏈過去,這很方便很簡單,像這樣

<NavLink to="/">To First</NavLink>

官方不推薦我們這麼幹,因爲跳轉根路由會丟失一些內容,諸如activeClassName,activeStyle什麼的。

官方推薦的是精確匹配方式 IndexLink

要是用還是要導包

import { IndexLink } from 'react-router'

然後使用

<IndexLink to="/" activeClassName="active">To First</IndexLink>

就行了

你還記得我們自己封裝的<NavLink/>組件嗎?

它使用<Link/>實現的,那麼就不能使用 IndexLink方式了嗎?

答案是可以,加一個屬性就行那就是 onlyActiveOnIndex

讓我們在 Two.js這個頁面加上返回按鈕試試

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

const H3= styled.h3`
  background-color: #a11
`;
export default React.createClass({
  render(){
    return (
      <div>
        <NavLink to="/" onlyActiveOnIndex>To First</NavLink><br></br>
        <H3>i am two h3</H3>
      </div>
    );
  }
})

單純的加一個屬性就好很簡單,看看效果

進入首頁 點擊 Two
這裏寫圖片描述

到了第二頁點返回鍵就可以回到第一頁了
這裏寫圖片描述

效果很簡單,但是整明白以後做類似功能就不會迷糊了,接下來還會繼續寫React-Router相關內容吧,我本身不是做前端的,學習起來不是太快,各位觀衆老爺見諒哦!

發佈了227 篇原創文章 · 獲贊 617 · 訪問量 105萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章