1. 程式人生 > >react-router-dom筆記

react-router-dom筆記

  • import as 關鍵字用來給匯入的變數設定新的名字,同時可以將整個模組匯入。
改名字:
import { lastName as surname } from './profile';

整體載入:
import * as circle from './circle';
console.log('圓面積:' + circle.area(4));
console.log('圓周長:' + circle.circumference(14));
  • exact用於精準匹配路徑,不用exact也會匹配到匹配的路徑的子路徑,這樣兩個路由元件都會顯示。我們需要的是每次切換隻會顯示一個Route中指定的元件
<Route  exact path="/" component={App}></Route>
<Route path="/hot" component={Hot} ></Route>
  • 傳遞引數到路由對應的元件:在引數前面加上: ,比如${match.url}/:id,

  • match.params(函式式宣告的元件中,match需要在函式引數中引入)或this.props.match.params(React class類render函式中)

  • 路由路徑引數傳遞到模板,用baseUrl/:id類似格式,元件中用match.params.id接收。

  • Link元件通過to屬性連結到對應path

    Route元件後 會渲染component屬性對應的元件到頁面上。

  • 路由的巢狀:${match.url}可以獲取到當前的基礎路徑。然後在路由用到的元件中可以用。

  • 路由的巢狀,直接在子元件模板中新增Route,Link,match.url引入基礎路徑

  • Route 自帶三個 render method 和三個 props 。

render methods 分別是:
<Route component>
<Route render>
<Route children>

props 分別是:
match
location
history
  • 當訪問地址和路由匹配時,一個 React component 就會被渲染,此時此元件接受 route props (match, location, history)。

  • match 物件包含了 Route path 如何與 URL 匹配的資訊,具有以下屬性:
    params: object 路徑引數,通過解析 URL 中的動態部分獲得鍵值對
    isExact: bool 為 true 時,整個 URL 都需要匹配
    path: string 用來匹配的路徑模式,用於建立巢狀的 Route
    url: string URL 匹配的部分,用於巢狀的 Link

  • 在以下情境中可以獲取 match 物件
    在 Route component 中,以 this.props.match獲取
    在 Route render 中,以 ({match}) => () 方式獲取
    在 Route children 中,以 ({match}) => () 方式獲

  • Router/Route 的改變:V4 Router元件裡只能渲染一個元件,V2和V3可以渲染多個。

Link 的特殊版,為頁面導航準備的。因為導航需要有 “啟用狀態”。

  • activeStyle: object
    如果不想使用樣式名就直接寫style

  • activeClassName: string
    導航選中啟用時候應用的樣式名,預設樣式名為 active

  • exact: bool
    若為 true,只有當訪問地址嚴格匹配時啟用樣式才會應用

  • 在Route中同時使用render和component時render方法不會起作用!

  • replace使得該連結的上一個連結回退時會跳過

  • <Switch> 只渲染出第一個與當前訪問地址匹配的 <Route> 或 <Redirect>
    為什麼 RR4 機制裡不預設匹配第一個符合要求的呢?
    答:這種設計允許我們將多個<Route>組合到應用程式中,例如側邊欄(sidebars)等等。

  • <Switch>下的子節點只能是 &lt;Route&gt;&lt;Redirect&gt;元素。只有與當前訪問地址匹配的第一個子節點才會被渲染。<Route> 元素用它們的 path 屬性匹配,<Redirect>元素使用它們的 from 屬性匹配。如果沒有對應的 path 或 from,那麼它們將匹配任何當前訪問地址。

  • 單頁面應用程式最終元件的結構:BrowserRouter–>div–>連結元件和路由元件 。

  • !!e.target.value.trim():表示將字串轉化為Boolean值,第一個感嘆號對字串取反,第二個字串再次取反從而實現轉換。