解决antd组件路由跳转Warning: validateDOMNesting: <a> cannot appear as a descendant of <a>.

这个警告是我们使用Link组件实现跳转时出现的

以register组件已经有账号跳转到login组件为例

import {Link} from 'react-router-dom' 
<Button><Link to='/login'>已经有账号</Link></Button>

效果如下:

可以看到Link组件有默认样式,点击还会有红色,使用起来毫无问题,跳转自如

但是控制台会报如下警告:

意思是不能再 <a>标签中重复的出现<a>标签。 显然antd的Button组件使用的DOM元素是<a>。 

解决办法使用history实现跳转

toLogin(){
    this.props.history.push('/login')
  }

<Button onClick={()=>{this.toLogin()}}>已经有账号</Button>

history.push和history.replace都可以实现跳转,区别是如果用push在login界面点击左回退箭头会回到register界面,而replace不会。

效果如下:

可以看到还帮我们消除了默认样式,何乐不为。

至此,问题解决。 


 

猜你喜欢

转载自blog.csdn.net/a1059526327/article/details/106934509