0

Wenn browserHistory Verwendung von 4 programmatisch Reagieren Router zu einem Anker zu navigieren:Reagieren Router browserHistory Push und Anker

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

ich die Hash-Wechsel in der Adressleiste sehen, aber die Seite scrollen nicht auf dem relevanter Anker. Ich habe es mit Standard <a href="#blah">Blah</a> überprüft und das funktioniert gut. Irgendeine Idee, was ich falsch mache? Thanks :)

UPDATE
So überprüft und <Link to="#blah">Blah</Link> nicht funktioniert entweder ... ich davon aus Objekt zu Links Arbeit mit der Geschichte bin reagieren?

+0

ich Browser-Router verwenden, das ist, warum ich über browserHistory spreche. Und wie Sie aus meinem Beitrag oben sehen können, habe ich genau die Codezeile ausprobiert, die Sie vorgeschlagen haben (außer "this", da ich eine funktionale Komponente verwende) –

+0

@Aaqib das ist falsch. Dies ist ein völlig unzusammenhängendes Problem. Pushing-Pfad funktioniert gut, Push-Hash nicht. –

Antwort

0

Nach einigen Untersuchungen habe ich beschlossen, eine Funktion hinzuzufügen componentDidUpdate Lifecycle-Ereignis zu behandeln:

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

Das ist das Problem schön löst :)

Verwandte Themen