Router入門0 x 203:react、react-route、react-route-dom
5026 ワード
0 x 000の概要
前の章は自分で実現した
0 x 001
このライブラリを言う前に、 を発行していません.
をトリガする.は、上記のいくつかの特性に基づき、前の章と同じように、
0 x 002
historyは、この特性のためにカプセル化されたライブラリで、以下のコード例を示します.
0 x 003 react-route ソースコード 効果 説明 にジャンプします. に変化させることができる. が完了した.
0 x 004 react-route-dom
上のコールは複雑すぎて、手動で作成する必要があります.ソースコード 説明: は を手動で作成しない. ライブラリは、 0 x 005まとめ
それをよく見て把握します.
0 x 006リソースソースコード
前の章は自分で実現した
route
を使っています.もちろん既存の在庫があります.それはreact-routeです.0 x 001
history Api
説明このライブラリを言う前に、
history
の新しいapi
を理解しておかなければなりません.window.history.pushState(data,title,?url)
data
:データtitle
:タイトルurl
:アドレスは、関数を呼び出すと、アドレスバーのアドレスが変更されますが、下の図のような画面の再取得にはつながりません.最初の初期化が完了したら、window.history.pushState({name:'a'},'','a')
window.history.pushState({name:'b'},'','b')
window.history.pushState({name:'c'},'','c')
window.history.pushState({name:'d'},'','d')
を順次呼び出します.アドレスバーはそれぞれ変わります.https://github.com/a
https://github.com/b
https://github.com/c
https://github.com/d
ですが、ネットワーク要求はwindow.history.state
:この変数は、現在位置state
にジャンプしたときに入ってきたdata
を取得することができる.window.onpopstate
:これはイベントであり、pop
によって傍受状態が出てきたときのイベントを設定することができ、go
、back
がイベントhistory
モードに基づくルーティングライブラリを作成することができます.0 x 002
history
ライブラリの説明historyは、この特性のためにカプセル化されたライブラリで、以下のコード例を示します.
import createHistory from 'history/createBrowserHistory'
const history = createHistory()
// location
const unlisten = history.listen((location, action) => {
// location is an object like window.location
console.log(action, location.pathname, location.state)
})
// location
history.push("/home", { some: "state" })
//
unlisten()
ブラウザを表示0 x 003 react-route
react-route
+history
+react
はセットになります.import React from 'react'
import ReactDom from 'react-dom'
import { Router, Route, Switch,withRouter } from 'react-router'
import createHistory from 'history/createBrowserHistory'
class App extends React.Component{
render(){
console.log(this)
return(
({render:()=>
})}>
({render:()=>
})}>
({render:()=>
})}>
)
}
}
const history = createHistory()
let MyApp=withRouter(App)
ReactDom.render(
,
document.getElementById('app')
)
App
コンポーネント説明App
は、すべてのコンポーネントがこの構成要素の下にマウントされており、この構成要素では、2つのreact-route
のコンポーネントが使用されており、1つはSwitch
であり、ルーティングが変化するときに表示されるルーティングを切り替えるために使用される.一つはRoute
コンポーネントで、一つはRoute
ページを表し、一つは一つのコンポーネントを表しています.ここでは三つのRoute
を使っています.各Route
は一つのルートに対応しています.ここでは一つのコンポーネントにも対応しています.ここでは便利のために直接に匿名関数で実現します.this.props.history.push('${path}')
を呼び出して対応するページにジャンプします.${path}
は私たちが設定したRoute
コンポーネントのpath
属性です.history
はhistory
ライブラリを通じてlocation
を傍受し、withRoute
は、HOC
のコンポーネントにApp
のオブジェクトとルーティングに関する属性を注入したhistory
であり、ルーティングの存在をブロックし、App
のコンポーネントを純粋なコンポーネントRouter
コンポーネントは、histoy
オブジェクトを引き継ぎ、history
の傍受およびルーティングのレンダリング0 x 004 react-route-dom
上のコールは複雑すぎて、手動で作成する必要があります.
history
、呼び出しthis.props.history.push('/index')
ジャンプは簡単なものがありますか?それはreact-router-domです.このライブラリは封入されました.react-route
、history
ライブラリは、いくつかの実用的なコンポーネントを提供しています.()=>({render:()=>
}) // `/index`
()=>({render:()=>
}) // `/article`
()=>({render:()=>
}) // `/mine`
BrowserRouter
を使用してRouter
の代わりにし、history
Link
を使用して直接ジャンプreact-route
およびhistory
ライブラリに基づいてカプセル化されており、dom
環境での急速な呼び出しのために、より実用的なコンポーネントを提供するだけで、このライブラリのために本質を忘れてはならない.それをよく見て把握します.
0 x 006リソース