我想将一些道具传递给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作为子项加载,但我想将一些道具从路由部分传递给组件。
我怎么能得到这个?
请指导我。
谢谢, 维杰
答案 0 :(得分:0)
使用cloneWithProps()
var newStep1 = cloneWithProps(Step1, {prop1: 'value', prop2: 'value'});// add props
并将其传递给<IndexRoute />
<IndexRoute component={newStep1} />
这应该有用..
答案 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);
}