reactjs – 将道具传递给React-Router 4.0.0儿童路由

前端之家收集整理的这篇文章主要介绍了reactjs – 将道具传递给React-Router 4.0.0儿童路由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将现有的react-router 3.0.0应用程序迁移到 4.0.0.在路由器中,我需要向其子节点传递一个额外的非路由相关的prop.

在以前版本的react-router,detailed in this post中有一些有点hacky方法可以实现这一点.我个人最喜欢的是使用cloneElement的this method,因为它确保所有的react-routers道具都被复制了:

// 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>

到目前为止,我的新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>

在保留提供的路由器道具的同时,为每个Match的组件添加appState prop的最佳方法是什么?

<路线>可以采用渲染道具而不是组件.这允许您内联组件定义.
<Route path='/user/:userId' render={(props) => (
  <User appState={value} {...props} />
)} />
原文链接:https://www.f2er.com/react/301281.html

猜你在找的React相关文章