2017-12-02 261 views
0

当使用browserHistory从阵营路由器4以编程方式导航到一个锚:阵营路由器browserHistory推动和锚

import { withRouter } from 'react-router-dom' 
... 
props.history.push('#blah') 

我可以看到散列在地址栏中改变,但页面不滚动到相关的主播。我已经用标准的<a href="#blah">Blah</a>检查过了,这工作正常。任何想法我做错了什么?谢谢:)

UPDATE
刚才检查和<Link to="#blah">Blah</Link>不工作要么...我假设反应Links工作中使用的历史对象吗?

+0

我使用的浏览器路由器的问题很好:),这就是为什么我说的browserHistory。正如你从我上面的帖子中看到的,我已经尝试了你建议的代码行(除了'this',因为我正在使用功能组件) –

+0

@Aaqib这是不正确的。这是完全不相关的问题。推送路径工作正常,推送哈希不。 –

回答

0

经过一番调查后,我决定添加一个函数来处理componentDidUpdate生命周期事件:

componentDidUpdate: props => { 
    const selected = props.history.location.hash 
    if(selected && selected.length > 0) { 
    const elem = document.getElementById(selected) 
    elem && elem.scrollIntoView() 
    } 
} 

这解决了