Détails
ReactJS : comment faire défiler un élément ?
J'ai un widget de chat qui affiche un tableau de messages à chaque fois que je le fais défiler vers le haut. Le problème que je rencontre actuellement est que le curseur reste fixe en haut lorsque les messages sont chargés, je veux qu'il se concentre sur le dernier élément d'index du tableau précédent. J'ai compris que je pouvais créer des références dynamiques en passant l'index, mais j'ai également besoin de savoir quel type de fonction de défilement utiliser pour y parvenir.
handleScrollToElement(event) {
const tesNode = ReactDOM.findDOMNode(this.refs.test)
if (some_logic){
//scroll to testNode
}
}
render() {
return (
<div>
<div ref="test"></div>
</div>)
}
112
3
Trouvez simplement la position supérieure de l'élément que vous avez déjà déterminé [https://www.w3schools.com/Jsref/prop_element_offsettop.asp][1] puis faites défiler jusqu'à cette position à l'aide de la méthode
scrollTo
[https://www.w3schools.com/Jsref/met_win_scrollto.asp][2].Quelque chose comme ceci devrait fonctionner :
[1] : https://www.w3schools.com/Jsref/prop_element_offsettop.asp [2] : https://www.w3schools.com/Jsref/met_win_scrollto.asp
UPDATE:
depuis React v16.3 le
React.createRef()
est préféréL'utilisation de findDOMNode va être dépréciée à terme.
La méthode préférée est d'utiliser les refs de callback.
github eslint
Vous pouvez utiliser quelque chose comme
componentDidUpdate
.