Ich habe gerade einige Zeit damit verbracht, einige Dinge mit React herauszufinden und Ereignisse / Positionen zu scrollen. Für diejenigen, die noch suchen, habe ich Folgendes gefunden:
Die Höhe des Ansichtsfensters kann mithilfe von window.innerHeight oder mithilfe von document.documentElement.clientHeight ermittelt werden. (Aktuelle Höhe des Ansichtsfensters)
Die Höhe des gesamten Dokuments (Körpers) kann mit window.document.body.offsetHeight ermittelt werden.
Wenn Sie versuchen, die Höhe des Dokuments zu ermitteln und wissen, wann Sie den unteren Rand erreicht haben, habe ich Folgendes gefunden:
if (window.pageYOffset >= this.myRefII.current.clientHeight && Math.round((document.documentElement.scrollTop + window.innerHeight)) < document.documentElement.scrollHeight - 72) {
this.setState({
trueOrNot: true
});
} else {
this.setState({
trueOrNot: false
});
}
}
(Meine Navigationsleiste war 72px in fester Position, daher die -72, um einen besseren Auslöser für Scroll-Ereignisse zu erhalten.)
Zuletzt finden Sie hier eine Reihe von Bildlaufbefehlen für console.log (), mit denen ich meine Mathematik aktiv herausfinden konnte.
console.log('window inner height: ', window.innerHeight);
console.log('document Element client hieght: ', document.documentElement.clientHeight);
console.log('document Element scroll hieght: ', document.documentElement.scrollHeight);
console.log('document Element offset height: ', document.documentElement.offsetHeight);
console.log('document element scrolltop: ', document.documentElement.scrollTop);
console.log('window page Y Offset: ', window.pageYOffset);
console.log('window document body offsetheight: ', window.document.body.offsetHeight);
Wütend! Hoffe es hilft jemandem!
.bind(this)
aus den Rückrufargumenten entfernen, da diese bereits vom Konstruktor gebunden sind.