2017-12-02 258 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() 
    } 
} 

這解決了