如何通过使用react-router通过路由传递道具来反应组件?

时间:2016-09-30 18:16:20

标签: reactjs react-router react-redux

我想将一些道具传递给IndexRoute上的组件。以下是我的代码段:

render(root: Element) {
    const { store, params } = this as any;
    ReactDOM.render(
          <Provider {...{ store }} >
              <Router history={browserHistory}>
                  <Route path={window.location.pathname} component={App}>
                    <IndexRoute component={Step1} />
                    <Route path="step1" component={() => (<Step1 params={params} />)} />
                    <Route path="step1" component={() => (<Step2 params={params} />)} />
                  </Route>
            </Router>
          </Provider>
   , root);

}

//App Component
import * as React from 'react';


export var App: any = ({children}) => (

    <div>
        <div>{children}</div>
    </div>
)

在初始加载时,我可以将step1作为子项加载,但我想将一些道具从路由部分传递给组件。

我怎么能得到这个?

请指导我。

谢谢, 维杰

3 个答案:

答案 0 :(得分:0)

使用cloneWithProps()

克隆元素
var newStep1 = cloneWithProps(Step1, {prop1: 'value', prop2: 'value'});// add props

并将其传递给<IndexRoute />

<IndexRoute component={newStep1} />

这应该有用..

Reference

答案 1 :(得分:0)

在您的应用中,而不是children添加此行:

{React.cloneElement(children, {params: params})}

这应该有效。

答案 2 :(得分:0)

您只需通过Route对象添加它们,如下所示:

<Route path="step1" someParams={params} component={Step1} />

然后在Step1组件中,您可以再次通过props

render() {
    console.log(this.props.route.someParams);
}