1. 程式人生 > >第 09 節、路由:Router 中的屬性和路由模式

第 09 節、路由:Router 中的屬性和路由模式

目錄

現在我們已經掌握了React路由導航的基本方法,這節學習一下標籤上的屬性和用法。這節還有一個重點就是路由的5種模式。

basename屬性

<Router basename="demo">
        <div>
            <Nav/>
                <Switch>
                    <Route exact path="/" component={Jscomponent} />
                    <Route path="/Jscomponentb"
component={Jscomponentb} />
<Route path="/Jscomponentc/:param/:other" component={Jscomponentc} /> <Redirect from="/redirect" to="/" /> <Route component={Error} /> </Switch> </div> </Router
>
,

設定好後,這時所有的導航路徑都加入了demo層級。但是要注意,此時設定的是全域性增加,如果是單個路由增加你需要特殊個性設定。

forceRefresh屬性

這個屬性的作用是開啟或者關閉React Router,也就是說如果你把forceRefresh的值設定成 true,它將關閉React路由系統,而真實的去伺服器端請求資訊。

現在我們把forceRefresh設定成true,你會發現路由已經不能使用了。

<Router basename="demo" forceRefresh={true}>
        <div>
            <Nav
/>
<Switch> <Route exact path="/" component={Jscomponent} /> <Route path="/Jscomponentb" component={Jscomponentb} /> <Route path="/Jscomponentc/:param/:other" component={Jscomponentc} /> <Redirect from="/redirect" to="/" /> <Route component={Error} /> </Switch> </div> </Router>,

這個操作經常使用在大型專案,在伺服器跳轉和ReactRouter切換時使用。比如作一個APP活動頁面,第一次請求時我們到伺服器端請求整個頁面,然後請求後,整個頁面DOM進行本地快取,生成React Router實現本地單頁應用。 只要設定我們的forceRefresh就可以了。

5中路由方式

我們一直在使用的路由方式是BrowserRouter,也就是瀏覽器的路由方式,其實React還有幾種路由方式:

  1. BrowserRouter:瀏覽器的路由方式,也是我們一直在學習的路由方式,在開發中最常使用。
  2. HashRouter:在路徑前加入#號成為一個雜湊值。Hash模式的好處是,再也不會因為我們重新整理而找不到我們的對應路徑了。
  3. MemoryRouter:不儲存history,所有路由過程儲存在記憶體裡,不能進行前進後退,因為位址列沒有發生任何變化
  4. NativeRouter:經常配合ReactNative使用,多用於移動端。
  5. StaticRouter:設定靜態路由,需要和後臺伺服器配合設定,比如設定服務端渲染時使用。

每種模式都有自己的優缺點,根據專案的需求選擇適合專案的就可以。

要想使用HashRouter或者MemoryRouter模式,我們必須先用import引入。

import {BrowserRouter as Router, Route, Switch,Redirect, HashRouter, MemoryRouter } from 'react-router-dom';

HashRouter設定程式碼:

<HashRouter basename="demo">
        <div>
            <Nav/>
                <Switch>
                    <Route exact path="/" component={Jscomponent} />
                    <Route path="/Jscomponentb" component={Jscomponentb} />
                    <Route path="/Jscomponentc/:param/:param1" component={Jscomponentc} />
                    <Redirect from="/redirect" to="/" />
                    <Route component={Error} />
                </Switch>
        </div>
    </HashRouter>,

MemoryRouter設定程式碼:

<MemoryRouter basename="demo">
        <div>
            <Nav/>
                <Switch>
                    <Route exact path="/" component={Jscomponent} />
                    <Route path="/Jscomponentb" component={Jscomponentb} />
                    <Route path="/Jscomponentc/:param/:param1" component={Jscomponentc} />
                    <Redirect from="/redirect" to="/" />
                    <Route component={Error} />
                </Switch>
        </div>
    </MemoryRouter>,

總結:這節課重點是路由的方式,這在專案開始時就應該根據需求選擇好,也是我們應該重點掌握的一個技能。

相關推薦

09 路由Router 屬性路由模式

目錄 現在我們已經掌握了React路由導航的基本方法,這節學習一下標籤上的屬性和用法。這節還有一個重點就是路由的5種模式。 basename屬性 <Router basename="demo"> <div

vue-router定義動態路由巢狀路由,並動態獲取引數

路由的定義,主要有以下幾步: 如果是模組化機制,需要呼叫 Vue.use(VueRouter) 定義路由元件,如: const Foo = { template: '<div>foo</div>' }; 定義路由(陣列):

1章1練習題10 查找位數

str idt findmi proc borde 1.3 hidden argc -a 問題描寫敘述 一個長度為L(L ≥1) 的升序序列S。處在第 ? L/2 ? 個位置的數稱為S的中位數。比如,若序列S1=(11,13,15,17,19)S

第二周特殊權限(set_uidset_gidstick_bit)/軟連接及硬連接

2018-03-29特殊權限 文件權限的機制是Linux系統中的一大特色,除了我們現在所熟知的讀(r)、寫(w)、執行(x)權限外,還有三個比較特殊的權限,分別為:setuid、setgid和stick bit(粘滯位)1、setuid與setgid講解:查看系統中常用到它的地方,以/etc/passwd和/

第二周find命令及文件名後綴

2018-03-30find命令 find命令用來在指定目錄下查找文件。任何位於參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。並且將查找到的子目錄和文件全部進行顯示。語法:find(選項)(參數)選項:-name<範本樣式>

vue刷新當前路由router-view 復用組件時不刷新的3種解決方案總結

func 解決 變化 before bsp htm onos 影響 div   vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將路徑和組件映射起來。傳統的

1一個蘿蔔一個坑——計數排序

算法基礎1、栗子 期末成績出來了,大白考了第4名,得了6 分,總分10分,回家媽媽打他了一頓:你看鄰居家的孩子考得多好呀!家長會上,老師要求大家成績從低到高排序,前三名獎勵小紅花,大家如何排隊呢? 2、準備工作 一個蘿蔔一個坑,首先要準備很多個坑,之後把對應的蘿蔔放進去,之後數一下那個坑裏有蘿蔔就OK了! 我

3時間空間的均衡——快速排序

算法 快速排序 1、引入 第一節講的計數排序有很好的運行時間表現,但因為占用空間的問題,只適用於數字非常有限的情況; 第二節講的冒泡排序解決了計數排序空間的問題,但時間復雜度卻變成了O(n^2)。 對冒泡排序的過程進行分析,我們可以發現,在每一輪的排序過程中,需要對所有相鄰的數字進行比較(當然,除了

4排序實戰

算法基礎 排序 習題 實戰 1、為什麽要實戰? 曾經有人問我,你寫代碼又快又好,是怎麽學的呀?其實我的水平也才一般般的啦,之所以能把程序寫出來,只有多練習。 看別人的算法,很快就看完了,但往往看完就忘記了,只有自己親自寫一遍,調試運行一邊,才能夠掌握。 在練習幾道題,舉一反三,才算是掌握,

人臉檢測之Haar分類器

白色 har cas 詳情 大小 一次 水平 分類 需求 人臉檢測屬於計算機視覺的範疇,早期人們的主要研究方向是人臉識別,即根據人臉來識別人物的身份,後來在復雜背景下的人臉檢測需求越來越大,人臉檢測也逐漸作為一個單獨的研究方向發展起來。 目前人臉檢測的方法主要有兩大類:基於

vue重新整理當前路由router-view 複用元件時不重新整理的3種解決方案總結

vue-router是Vue.js官方的路由外掛,它和vue.js是深度整合的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和元件的,路由用於設定訪問路徑,並將路徑和元件對映起來。傳統的頁面應用,是用一些超連結來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也

分享知識-快樂自己Hibernate get() load()savaupdatesavaOrUpdatemerge,不同之處及執行原理?

1):Hibernate 中 get()  和 load() 有什麼不同之處? 1)Hibernate的 get方法,會確認一下該id對應的資料是否存在,首先在session快取中查詢,然後在快取中查詢,還沒有就查詢資料庫,資料庫中沒有就返回null。 2)Hibernate的 load方法載入

python學習之【十七篇】Python的面向物件(一)

1.什麼是類和類的物件? 類是一種資料結構,我們可以用它來定義物件,後者把資料值和行為特性融合在一起,類是現實世界的抽象的實體以程式設計形式出現。例項是這些物件的具體化。類是用來描述一類事物,類的物件指的是這一類事物的一個個體。例如:“人”就是一個類,而男人,女人,小孩等就是“人”這個類的例項物件;再比如“

hive使用技巧把很多小檔案匯入一張表顯示在檔案位置行數等。

1.使用MSCK命令匯入輸入到hive表 我們有時候會遇到很多小檔案需要匯入到一張hive表裡面,但是一個個匯入非常麻煩。 假設建立一個外部表,這個表在hdfs的order資料夾裡,但是這個資料夾現在是空的。所以用select * 是沒有資料的。 CREATE EXTERNAL TABL

vue-routerqueryparams傳參(接收引數)以及$router$route的區別

  query傳參: this.$router.push({ path:'/...' query:{ id:id } }) 接收引數:this.$route.query.id params傳值: 傳參: this.$router.push({ name:'...' params:{ id:id

vue-routerqueryparams傳參(接收參數)以及$router$route的區別

params path 以及 url this 區別 nbsp pan str query傳參: this.$router.push({ path:‘/...‘ query:{ id:id } })

逆矩陣與轉置矩陣

http://www.cnblogs.com/Dumblidor/p/5760606.html 一、關於逆元   (這裡看不懂可以跳過)   在群論中有“逆元”這一概念。   提到逆元就要提到另一個概念:單位元(么元,Identity)。   我們依次來介紹,簡單來說,設G是一個

學習JS陣列物件的之間的關聯區別

在jscript中陣列和物件幾乎相同,兩者主要的差別是物件沒有自動長度屬性,而陣列沒有物件的屬性和方法。 陣列定址 使用方括號"[]"來定址陣列。方括號中是一個數值或一個值為整數的表示式。 將物件作為關聯陣列 通常,使用點運算子“.”訪問物件的屬性。例如, myOb

劍指offer三十一題整數1出現的次數(從1到n整數1出現的次數)

題目描述 求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區

劍指offer三十五題陣列的逆序對

題目描述 在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 輸入描述: 題目保證輸入的陣列中沒有的相同的數字