0
votes

Détecter réagir simultanément sur l'élément inférieur. défilement

Que faire pour accéder à l'événement du gestionnaire de défilement? Impossible d'accéder à offsettop, à Scrolltop etc xxx

codesAbdBox < / a>


1 commentaires

Que fait la sortie de la console? L'exemple CoDesandbox n'autorise pas le défilement.


3 Réponses :


0
votes

Vous pouvez toujours accéder aux méthodes de fenêtre traditionnelles pour déterminer si vous avez atteint le bas. Voici votre code à jour et votre bac à sandbox: https://codesandbox.io/s/hardcore-poitras-04g3h

Nous pouvons utiliser l'état pour configurer l'apparence du composant lorsque nous atteignons le fond. P>

import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

class App extends React.Component {
  state = {
    endReached: false
  };
  handleScroll = () => {
    if (
      window.scrollY + window.innerHeight >= document.body.offsetHeight &&
      !this.state.endReached
    ) {
      this.setState({
        endReached: true
      });
    } else {
      this.setState({
        endReached: false
      });
    }
  };
  componentDidMount() {
    window.addEventListener("scroll", this.handleScroll);
  }
  render() {
    return (
      <div className={this.state.endReached ? "end-reached" : ""}>
        <h1 style={{ height: "1000px" }}>Hello CodeSandbox</h1>
        <h1>Hello end</h1>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);


0 commentaires

0
votes

Vous pouvez utiliser document.documentalement pour accéder à ScrollTop : xxx


0 commentaires

0
votes

Essayez ce code.J'espère que cela fonctionnera.

import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

class App extends React.Component {
  handleScroll = e => {
    const winScroll =
      document.body.scrollTop || document.documentElement.scrollTop;
    console.log("scrolled=========>", winScroll);
  };
  componentDidMount() {
    window.addEventListener("scroll", this.handleScroll);
  }
  componentWillUnmount() {
    window.removeEventListener("scroll", this.listenToScroll);
  }
  render() {
    return (
      <div>
        <h1 style={{ height: "1000px" }}>Hello CodeSandbox</h1>
        <h1>Hello end</h1>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);


0 commentaires