2017-02-23 81 views
1

我知道如何在以前版本的React Router中完成它,但我完全不知道如何在新的React Router v4中完成它。有人能幫助我嗎?React Router v4 Modal

我想要什麼?

  1. 當您在瀏覽器url中輸入/ image/1時,頁面將會正常顯示。
  2. 當你點擊<Link>Image as modal</Link>modal: true狀態,將出現模式與圖像但後面的模式必須是瀏覽器中的前一內容+ url ===/image/1 ...然後如果按F5,頁面將顯示爲正常。

例子:Instagram的...等

我怎麼覺得我做錯了嗎?

  1. 我不知道如何顯示以前的內容。這就是我所想的。

代碼:

const Images = (props) => { 
    return (
    <div> 
     <h2>Images</h2> 
     <ul> 
     <li><Link to={{ 
      pathname: '/image/1', 
      state: { 
      modal: true 
      } 
     }}>Image as modal</Link></li> 
     <li><Link to="/image/2">Image</Link></li> 
     </ul> 
    </div> 
) 
} 

const Image = (props) => { 
    return (
    <div> 
     <h2>Image {props.match.params.id}</h2> 
     <ul> 
     <li><Link to="/images">Back to Images</Link></li> 
     </ul> 
    </div> 
) 
} 

ReactDOM.render(
    <Provider store={store}> 
    <Router> 
     <div> 
     <Route path='/images' component={Images} /> 
     <Route path='/image/:id' component={Image} /> 
     </div> 
    </Router> 
    </Provider>, 
    document.getElementById('digital') 
) 
+0

您對以前版本的React-router有什麼解決方案? –

+2

@SashaKastsiushkin他們在v4中解決了這個問題。所以你可以在當前版本的路由器中創建模態。以下是示例:https://reacttraining.com/react-router/web/example/modal-gallery – Altaula

回答

1

我有同樣的問題,所以我創建:

http://npmjs.com/package/react-router-modal

它可以讓你情態附加到路徑。

import { ModalContainer, ModalRoute } from 'react-router-modal'; 
// ... 
ReactDOM.render(
    <Provider store={store}> 
    <Router> 
     <div> 
     <Route path='/images' component={Images} /> 
     <ModalRoute path='/image/:id' component={Image} /> 
     </div> 
    </Router> 
    <ModalContainer /> 
    </Provider>, 
    document.getElementById('digital') 
) 

有在https://davidmfoley.github.io/react-router-modal-examples/

幾個簡單的例子希望它可以幫助:你會像下面這樣使用它。

+1

請提供一些關於如何使用此軟件包的代碼/說明。查看[回答]瞭解如何處理到其他頁面的鏈接的詳細信息。 –