react+hashRouter+锚点功能

antd的锚点坑太大,a标签锚点又在用hashRouter的时候不适用,只能自己想办法了,经过试验,总结了以下方法:

1

HeaderTabs: [

{

href: 'auction-detail',

text: '拍卖详情'

},

{

href: 'standard-detail',

text: '标的详情'

},

{

href: 'others-detail',

text: '其他'

},

{

href: 'technological-process',

text: '流程'

}

]

2、scrollToAnchor = (anchorName) => {

if (anchorName) {

let anchorElement = document.getElementById(anchorName);

console.log(anchorElement)

if(anchorElement) {

this.setState({

curTab: anchorName

})

let scrollHeight = anchorElement.offsetTop - 65;

console.log(scrollHeight)

window.scrollTo(0,scrollHeight);

}

}

}

3、<div className="ant-anchor">

{

HeaderTabs.map((item,index)=>

<div className={`${curTab === item.href ? 'ant-anchor-link-active' : ''} ant-anchor-link`} key={index}>

<a className={`${curTab === item.href ? 'ant-anchor-link-title-active' : ''} ant-anchor-link-title`} onClick={()=>this.scrollToAnchor(item.href)} title={item.text}>{item.text}</a>

</div>

)}

</div>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值