Saya hanya menghabiskan waktu yang serius untuk mencari tahu beberapa hal dengan Bereaksi dan menggulir acara / posisi - jadi bagi yang masih mencari, inilah yang saya temukan:
Ketinggian viewport dapat ditemukan dengan menggunakan window.innerHeight atau dengan menggunakan document.documentElement.clientHeight. (Tinggi viewport saat ini)
Ketinggian seluruh dokumen (tubuh) dapat ditemukan menggunakan window.document.body.offsetHeight.
Jika Anda berusaha menemukan ketinggian dokumen dan tahu kapan Anda telah mencapai dasarnya - inilah yang saya kemukakan:
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
});
}
}
(Navav saya adalah 72px dalam posisi tetap, sehingga -72 untuk mendapatkan pemicu scroll-event yang lebih baik)
Terakhir, berikut adalah sejumlah perintah gulir ke console.log (), yang membantu saya mengetahui matematika saya secara aktif.
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);
Wah! Semoga ini bisa membantu seseorang!
.bind(this)
dari argumen callback karena sudah terikat oleh konstruktor.