ice
ice copied to clipboard
怎么通过React.cloneElement 给this.props.children传参
umi下如下写法传参成功,切换到飞冰路由,得不到传参
{/* layout 里需 clone 两级,因为第一级是 Switch,然后才是 Route。 */}
{React.Children.map(children, child => {
console.log(children, 'children=----');
return React.cloneElement(
child,
null,
React.Children.map(child.props.fallback, childs => {
console.log(childs, '---------childs');
return React.cloneElement(childs, { courtDetail: { aa: 1 }, loading: false });
})
);
})}
简单描述下具体的诉求,是希望向哪个组件穿什么样的参数,包括这段代码是添加到哪里的
{
path: '/collection/outOrgan/:organId',
name: '委外',
component: OutOrganDetail,
children: [
{
path: '/info',
name: '机构信息',
component: lazy(() =>
import('@/pages/Outsource/OutOrgan/components/OrganDetail/OrganInfo')
),
},
{
path: '/record',
name: '记录',
component: lazy(() => import('@/pages/Outsource/OutRecord')),
},
],
},
具体页面
// 请求获取数据,children 就是子路由(compoent),我希望将请求的数据传进去,之前用的是React.cloneElement实现的
<FullPageLayout left={topLeft()} right={topRight()} subBar={subBar()}>
{props.children}
</FullPageLayout>
<OutOrganDetail/>组件是公用的头,包含一些操作,我希望把请求放在这个组件里,请求获取的数据要怎么传到component的页面里面
layout 下渲染的是 react-router 的结构,目前追加的参数的确没有往下透传,这个我们可以优化下 另外针对多级数据的传递推荐使用 useContext 或者官方提供的状态管理方案