Bonjour,
Voila je rencontre un petit problème avec mon code.
J'essaye de faire en sorte que lors du scroll, ma state "className" passe de "box" à "green", mais je sens que je ne suis pas loin mais je ne vois pas où est le soucis.
Je cherche a faire en sorte que lorsque le component passe sur l'écran, ce dernier change de classe.
import React from 'react'
import './onScroll.css';
class Scroll extends React.Component {
constructor(props) {
super(props);
this.state = {className: "box"}
};
handleScroll(e) {
let element = e.target;
if (element.scrollHeight - element.scrollTop === element.clientHeight) {
this.setState({className :"green"})
}
}
render() {
return (
<div className={this.state.className} onScroll={this.handleScroll}></div>
);
}
}
export default Scroll
.box {
width: 100%;
height: 100vh;
background-color: gray;
cursor: pointer;
transition: 1s;
opacity :0;
}
.green {
opacity:1;
transition: 1s;
}
Et en fait, ma box reste en opacity: 0, elle ne change donc pas de classe, mais je ne comprend pas pourquoi.
Si quelqu'un pourrait m'aider?
Merci!
En fait c'est pas ta div que tu scrolles, mais ton document, c'est surement sur document qu'il faut ajouter un .addEventListener('scroll', ...)
Salut,
Est-ce que tu es sûr que ta méthode handleScroll(e) est bien appelée ? Tu as fait mit un console.log()pour t'assurer que l'appel fonctionne ?
Non elle ne l'est pas justement, et lorsque j'appelle un console.log() avant le "if" cela ne fonctionne pas :/