Reactjs 如何使用cloneElement将道具传递到Route';s组件?
说路线是Reactjs 如何使用cloneElement将道具传递到Route';s组件?,reactjs,react-router,react-router-v4,react-router-dom,Reactjs,React Router,React Router V4,React Router Dom,说路线是 <App> <Route path='/login' component={Login}/> </App> 但是foo:bar不会出现在Login组件的道具中 如果我用替换,那么我会在那里得到foo:bar道具 我的问题是如何将道具传递给应用程序子级(路由),以便将这些道具传递给相应的组件,我不确定它是否适用于您的用例,但配备了: ( )} /> 我不确定它是否适用于您的用例,但是配备了: ( )} /> 不幸的是,这不起作用foo:'ba
<App>
<Route path='/login' component={Login}/>
</App>
但是foo:bar
不会出现在Login
组件的道具中
如果我用
替换
,那么我会在那里得到foo:bar
道具
我的问题是如何将道具传递给应用程序子级(
路由
),以便将这些道具传递给相应的组件
,我不确定它是否适用于您的用例,但
配备了:
(
)} />
我不确定它是否适用于您的用例,但是
配备了:
(
)} />
不幸的是,这不起作用foo:'bar'
来自应用程序结果,类似于
我希望它反映在组件=
中。幸好这不起作用foo:'bar'
来自应用程序结果,类似于
我希望它反映在组件=
中。谢谢,谢谢。我知道可以重新格式化我的子迭代,从child
中删除props.component
属性,并将其替换为render
,但我正在寻找一种解决方案,这些props可以应用于组件而不必这样做。@David,我发现React.Children
方法只在有限的情况下可行;只要你需要将道具传递到一个以上的层次(即从App
到Route
到Login
),它就会变得混乱,通常会有更好的解决方案,特别是如果中间组件不是你的(即Route
)。你可能想调查一下,尽管我猜这对你所需要的东西来说太过分了。否则,您可能可以为Route
创建包装,并在其中使用React.Children.map
传递道具(除了您提供的示例代码)。谢谢。我知道可以重新格式化我的子迭代,从child
中删除props.component
属性,并将其替换为render
,但我正在寻找一种解决方案,这些props可以应用于组件而不必这样做。@David,我发现React.Children
方法只在有限的情况下可行;只要你需要将道具传递到一个以上的层次(即从App
到Route
到Login
),它就会变得混乱,通常会有更好的解决方案,特别是如果中间组件不是你的(即Route
)。你可能想调查一下,尽管我猜这对你所需要的东西来说太过分了。否则,您可能可以为Route
创建包装,并在其中使用React.Children.map
传递道具(除了您提供的示例代码)。
React.Children.map(props.children, function (child) {
return React.cloneElement(child, {
foo: 'bar'
})
});
<App>
<Route
path='/login'
render={routerProps => (
<Login
{...routerProps}
foo='bar' />
)} />
</App>