1. 程式人生 > >React-router(8)Link 標籤 to 屬性為物件時(路由資訊傳值)

React-router(8)Link 標籤 to 屬性為物件時(路由資訊傳值)

參考 6.routeInfo.js

在元件裡,每個元件的路由資料,都是各自獨立的。

在之前分析中,已知:

  1. match 屬性的值,儲存的是該 Route 標籤的路由;
  2. location 屬性的值,其中 url 和 path 不同 Route 元件中,值是相同的;


但【2】並不準確,準確的說,自帶的 hash , search , pathname 這三個屬性的值,是相同的;

假如你在裡面添加了其他資料,那麼結果就有所不同了。

例如 Link 標籤,他有一個屬性 to,可以用於路徑跳轉。

比較常見的是以下這種寫法:

<Link to={`${props.match.url}/`}>子路由</Link>

但是,to 的值,也可以用物件,例如這樣:

<Link to={{
    pathname: `${this.props.match.url}/1`,
    myState: '這是我自定義的變數'
}}>示例1</Link>

當路由資訊匹配時(參照DEMO):

1、父元件的路由資訊為:

{
    "match": {
        "path": "/RouteInfo",
        "url": "/RouteInfo",
        "isExact
": false, "params": {} }
, "location": { "pathname": "/RouteInfo/1", "search": "", "hash": "" }, "history": { "length": 9, "action": "POP", "location": { "pathname": "/RouteInfo/1", "search": "", "hash
": "" }
}
}

2、被傳值的子元件的路由資訊:

{
    "match": {
        "path": "/RouteInfo/1",
        "url": "/RouteInfo/1",
        "isExact": true,
        "params": {}
    },
    "location": {
        "pathname": "/RouteInfo/1",
        "myState": "這是我自定義的變數",
        "search": "",
        "hash": ""
    },
    "history": {
        "length": 24,
        "action": "PUSH",
        "location": {
            "pathname": "/RouteInfo/1",
            "myState": "這是我自定義的變數",
            "search": "",
            "hash": ""
        }
    }
}

可以看到,被傳值的子元件的路由資訊,location 會多了一個屬性。

但是請注意,以下幾種情況會導致失去這些資訊:

  1. 重新整理頁面;
  2. 訪問更深一層的子元件(因為資訊被更新了);
  3. 重新整理後,訪問相同的 url。舉例來說,你訪問了該 url,傳值了也收到了,然後重新整理頁面,再點選該 url,是沒有的。原因是相同 url 跳轉;

相關推薦

React-router8Link 標籤 to 屬性物件路由資訊

8、Link 標籤 to 屬性為物件時(路由資訊傳值) 參考 6.routeInfo.js 在元件裡,每個元件的路由資料,都是各自獨立的。 在之前分析中,已知: match 屬性的值,儲存的是該 Route 標籤的路由; location

React 學習筆記 react-router 4. 頁面

動態路由傳值 1.配置(根元件載入元件,注意path寫法: /xxx/:id) <Route path='/product/:id' component={RouterProduct}></Route> 2.跳轉(注意寫法:es6 模板字串 鍵盤es

React 16+Redux+React Router 4 Node.Js全棧開發招聘App專案實戰雲盤下載

第1章 介紹課程目標和學習內容包括課程概述、課程安排、學習前提、講授方式等方面的介紹,最後演示了整個招聘App的功能,讓同學們對課程專案有一個直觀的瞭解。1-1 課程導學第2章 知識儲備2-1 介紹React開發環境2-2 ES6常用語法2-3 express+mongodb

linux -mongodb 啟動問題Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :

-bash-4.1# ./mongo MongoDB shell version v3.4.6 connecting to: mongodb://127.0.0.1:27017 2017-09-20T20:02:14.620+0800 W NETWORK

淺拷貝在進行當中一個對象的運算開辟新的空間

int 構造 nts iostream alt 小寫 釋放 fcm pri 如圖變換,且對於指向同一空間的String進行計數 代碼例如以下: #include <iostream> using namespace std; class Str

lombok使用給自己看的,只不要忘記自己用過的技術

ref targe 添加 res tostring 當我 fin alsa nal 如何使用? 一、1)eclipse使用方法 1. 從項目首頁下載lombok.jar 2. 雙擊lombok.jar, 將其安裝到eclipse中(該項目需要jdk1.6+的環境)

Vue bus的使用兄弟|非父子組件-->可以使用一個空的Vue實例作為中央事件總線new Vue()

strong and data 使用 實例 ted 事件總線 col str 1.在main.js中註冊全局的bus Vue.prototype.bus=new Vue(); 2.在組建中使用 子組建使用:this.bus.$emit(‘自定義事件名‘,data)

HTML中在img使得src屬性php程式JPgraph所產生的影象

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript"> functio

C++建立類物件無參後不加括號與加括號的區別

https://blog.csdn.net/Windgs_YF/article/details/80927058 https://blog.csdn.net/u012750259/article/details/44832769 1、在棧中例項化物件 A a;//例項化物件,會呼叫c

js 當變數值0,判斷是否0==''返回ture的問題

var aa = 0; if(aa==""){ alert("111"); } ------------------------------ var aa = 00; alert(aa==""); 都是返回true。 這是因為0與 ’ ’ 轉換成布林型都是false的。

Nodejs入門基礎使用express模組通過JSON(GET、POST)提交方式獲取或返回

前端通過ajax get或則post方式提交資料到後臺,後臺傳遞資料到前臺互相呼叫getjson.html:   <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"

Nuxt 巢狀路由nuxt-child元件父子頁面元件的

Nuxt巢狀路由官網上的API詳解:點選連結 看了官網上的api實現了官網的案例你會發現訪問父頁面中只能顯示父頁面中的內容,要想預設的在<nuxt-child>區域顯示一個頁面內容怎麼辦?   自己案例程式碼: pages/parent.vue &

利用arcpy實現arcgis中欄位自動編號pycharm匯入arcpy站點包,欄位建立、更新與寫

一、問題來源 今天看到群裡有一個小夥伴,要實現這樣的一個功能,來看一下他的提問: 問下各位大神,如果圖層裡面有2000個小班,我需要將這2000小班在屬性表裡面編號依次為1 2 3 4……1998 1999 2000該怎麼操作呢 。 於是下面有人說可以對欄位的FID操作

自定義介面內部類的一個簡單的使用跨類

實現使用介面內部類進行跨類傳值 定義一個普通的Java類: package com.example.shiyan; public class haitao { private static haitao instance; hh

線段樹總結單點更新,區間更新,區間求和,區間求最

注:每個功能在程式碼中有註釋,具體詳解可自己輸出測試 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define N 4000

自定義介面內部類的兩個具體應用跨類

個人理解,Android開發中的介面內部類和 C#中委託和事件的作用是一樣的 觸發某類中定義的事件後,會執行所有繫結到這個事件上的方法,這些方法在其它不同的類中 例子一: 例子二:(使用自定義介面內部類實現主Acti

thinkphp+layui,在父頁面對彈窗中的控制元件進行賦操作

問題描述:點選評論回覆按鈕->彈出表單輸入框->對所點選的按鈕進行回覆評論->提交回復。這裡遇到的問題就是怎麼通過layer建立一個彈窗並把這個需要操作的id值傳到iframe彈出層。解決:點選當前條需要回復的評論並獲取到這個評論的id值,在點選回覆按鈕是用

檔案屬性改不了解決完病毒後,屬性中的隱藏灰色,選不了

開始---執行裡輸入--- CMD, 在彈出的命令提示符內輸入: attrib -r -h 路徑(你要修改的檔案或資料夾) 例如:你要修改的D:\a attrib -r -h D:\a 如果修改所有檔案可以 attrib -r -h D:\*

收藏、點贊按鈕 怎麼由當前的狀態收藏/取消收藏通過點選設定取消收藏收藏

看到這裡,我是想介紹我對這個收藏按鈕(五角星),反覆點選來迎合使用者體驗的。那怎麼滿足反覆點選設定狀態呢? 要求是這樣的:我點選收藏按鈕(假設:原先的收藏按鈕是未收藏狀態(暗色)),當我點選過收藏的時候,按鈕被點亮為橙色。當我再次對其點選的時候,當然,我要知道此時的收藏按鈕