Ho appena trascorso un po 'di tempo serio a capire alcune cose con React e scorrere eventi / posizioni - quindi per coloro che sono ancora alla ricerca, ecco cosa ho trovato:
L'altezza del viewport può essere trovata usando window.innerHeight o usando document.documentElement.clientHeight. (Altezza attuale della vista)
L'altezza dell'intero documento (corpo) può essere trovata usando window.document.body.offsetHeight.
Se stai cercando di trovare l'altezza del documento e sapere quando hai toccato il fondo, ecco cosa mi è venuto in mente:
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
});
}
}
(La mia barra di navigazione era 72px in posizione fissa, quindi il -72 per ottenere un trigger trigger di scorrimento migliore)
Infine, ecco alcuni comandi scroll su console.log (), che mi hanno aiutato a capire attivamente la mia matematica.
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);
Meno male! Spero che aiuti qualcuno!
.bind(this)
dagli argomenti di callback poiché è già associato dal costruttore.