dou*_*lin 8 reactjs react-router
我正在尝试将现有的react-router 3.0.0应用程序迁移到4.0.0.在路由器中,我需要传递一个prop与其子节点相关的非路由选择.
在本文中详细介绍的反应路由器的先前版本中,有一些方法可以实现这一点.我个人最喜欢的是使用这种方法cloneElement,因为它确保了所有的反应路由器道具也被复制了:
// react-router 3.0.0 index.js JSX
<Router history={browserHistory}
<Route path="/" component={App}>
<Route path="/user/:userId" component={User} />
<IndexRoute component={Home} />
</Route>
</Routes>
// App component JSX (uses cloneElement to add a prop)
<div className="App">
{ cloneElement(props.children, { appState: value }) }
</div>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的新App组件如下所示:
// react-router 4.0.0 App component JSX (moved routing code out of index.js and into here)
<BrowserRouter>
<div className="App">
<Match exactly pattern="/" component={Home} />
<Match pattern="/user/:userId" component={User} />
<Miss component={Home} />
</div>
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
在保留提供的路由器道具的同时,appState为每个Match组件添加道具的最佳方法是什么?
Pau*_*l S 23
<Route>可以采取render支柱代替component.这允许您内联组件定义.
<Route path='/user/:userId' render={(props) => (
<User appState={value} {...props} />
)} />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4195 次 |
| 最近记录: |