javascript - 将状态传递给 react-router 1.x

标签 javascript reactjs react-router

react-router 版本 0.13.3 中我有

Router.run(routes, createBrowserHistory, function(Handler, state) {
    React.render(<Handler query={ state } path={ state.pathname }/>, document.getElementById('app'))
});

react-router 1.0.0.rc3 我有

let history = createBrowserHistory();
React.render(<Router history={ history } >{ routes }</Router>, document.getElementById('app'));

使用 react-router 0.13.3,我能够通过回调将状态传递给我的组件。我想知道如何对版本 react-router 1.x 做同样的事情?

最佳答案

React Router 1.0 现在从您的路由组件创建元素,默认将以下与路由相关的状态作为 props 传递给它们:

  • history - 一个 History对象
  • location - 一个 Location对象
  • params - 从 URL 中提取的参数
  • route - 渲染组件所属的路由对象
  • routeParams - 从渲染组件所属的路由对象的 URL 中提取的参数
  • routes - 所有匹配的路由对象的数组

您应该能够使用这些来获取与路由相关的状态,例如要获取路径名,您可以使用 this.props.location.pathname在路由组件中,或将它们传递给需要它们的 child 。

The 1.0 upgrade guide has more details about this .


如果你想在渲染时向单个路由组件传递额外的 Prop ,你可以使用 React.cloneElement() 像这样:

{React.cloneElement(this.props.children, {extra: 'extra prop'})

如果你想在创建路由组件元素时传递额外的 Prop ,你可以pass a custom createElement() function to <Router> .

关于javascript - 将状态传递给 react-router 1.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181159/

相关文章:

reactjs - 使用环境变量设置基本 href

reactjs - React 嵌套路由抛出错误 - Meteor

javascript - 使用 'return false' 重新加载当前页面的表单提交

javascript - 如果按钮子级位于模式下的父类中,如何委托(delegate)事件

javascript - TypeScript:在没有显式返回类型的情况下,不会在 lambda 中检查多余的属性

javascript - react 还原 : Update value in deep nested object

json - 使用 axios.get 渲染 json 数据

reactjs - React 将 <Link to =""></Link> url 附加到组件的当前路径

reactjs - 使用 react-router v4 测试安装的组件

javascript - 获取正则表达式中的第六个匹配行