2017-09-19 123 views
2

這裏是我想要實現的東西:陣營路由器V4 - 頁組合

/event/customercenterheaderfooter的情況顯示,只有main標籤的內容被改變。

另一方面,/login/register頁面不顯示頁眉和頁腳。

首先,我的網站的頁面組成如下。

/
- /事件
-/customercenter
/登錄
/註冊

我似乎沒有要解決這個問題,因爲我覺得我誤解匹配。

當一個人進入/event頁面, /基本上是比賽,所以我認爲,在/呈現的部分將被繪製。

所以//login/register使用switchexact支鏈的,和/下要呈現的網頁中的<Route path = {...} component = {...}形式被簡單地構成。爲了實現這一點,我試圖通過引用堆棧溢出中的其他文章來實現它,但出於某種原因,路由器無法捕獲來自/register/login(而不是它返回null)的組件。

簡而言之:

  • 預期的結果:無頁眉和頁腳上/login/register
  • 當前結果:/login/register與頁眉和頁腳中沒有匹配compoennt。

以下是我的簡化代碼:


index.js

ReactDOM.render(
    <Router> 
     <App /> 
    </Router> 
, document.getElementById('root')); 

App.js

爲了/login/register避免匹配/我用exact。但它不匹配任何東西。


首頁。JS

class Home extends Component { 
    render() { 
     return (
      <div className="App"> 
      <MainHeader /> 
      <AwesomeRouter /> 
      <Footer/> 
      </div> 
     ); 
    } 
} 

router.js

class AwesomeRouter extends Component { 
    render() { 
     return (
      <div> 
       <Route path='/event' component={Event}/> 
       <Route path='/customercenter' component={CustomerCenter}/> 
      </div> 
     ); 
    } 
} 

回答

1

您可以在 '/' 路徑移動到列表的底部,並從路線中刪除確切

因此,如果 '/登錄' 和 '/註冊' 不匹配,那麼 '/' 將匹配:

<Switch> 
    <Route path="/login" component={Login} /> 
    <Route path="/register" component={Register} /> 
    <Route path="/" component={Home}/> 
</Switch> 

你 '/事件' 和 '/ customercenter' 路線然後將也匹配'/',因爲它沒有設置爲確切匹配。

+0

感謝您的回答,但這是我已經嘗試過的。 如果我這樣做了'/ login'和'/ register'就可以正常顯示,但是'/ event'和'/ customercenter'不能。 –

+0

您可以將您的'/'路線移動到底部並刪除**確切的**。這樣,** **中的其他路線將首先匹配。 –

+0

哦!我明白你的意思了! –