Właśnie poświęciłem trochę czasu na zastanowienie się nad niektórymi rzeczami związanymi z Reagowaniem i przewijaniem wydarzeń / pozycji - więc dla tych, którzy wciąż szukają, oto co znalazłem:
Wysokość rzutni można znaleźć, używając window.innerHeight lub document.documentElement.clientHeight. (Bieżąca wysokość rzutni)
Wysokość całego dokumentu (treści) można znaleźć za pomocą window.document.body.offsetHeight.
Jeśli próbujesz znaleźć wysokość dokumentu i wiesz, kiedy osiągnąłeś dno - oto, co wymyśliłem:
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
});
}
}
(Mój pasek nawigacyjny miał 72 piksele w stałej pozycji, więc -72, aby uzyskać lepszy wyzwalacz zdarzenia przewijania)
Wreszcie, oto kilka poleceń przewijania do console.log (), które pomogły mi aktywnie zrozumieć matematykę.
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);
Uff! Mam nadzieję, że to komuś pomoże!
.bind(this)
z argumentów wywołania zwrotnego, ponieważ są one już powiązane przez konstruktor.