react动态子路由不触发componentDidMount生命周期的解决

目录

应用场景

为什么不用子组件代替子路由

不触发生命周期原因

解决方法


应用场景

适用于列表页样式和交互相同,列表页只需根据tab的不同id调用对应列表的情况。比如下图

为什么不用子组件代替子路由

业务需要不同的tab对应不同的链接,链接可以分享给其他人直接查看。

不触发生命周期原因

componnetDidMount是在页面初次加载渲染的时候触发,而父路由改变tab时,列表页子路由组件已经渲染了,所以不会触发。

解决方法

父组件引用子路由时,给子路由的渲染组件加一个key即可,key是唯一的。

<Route path="/list/:id" render={props => (
	(<ChildrenList {...props} key={props.location.pathname} />)
)}/>

此处的props.location.pathname是我打印this.props之后,发现的一个符合key值要求的值,这个可以根据具体项目来,不过既然是动态子路由,我觉得这个值应该都是不一样的,可以作为key值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值