Comment puis-je détecter la molette de la souris vers le bas de l'événement à l'aide de ReactJS?

0

La question

Je vais avoir du mal à comprendre comment détecter "mouse3" / la molette de la souris vers le bas de l'événement à l'aide de réagir de l'événement onMouseDown.

Je suis en utilisant onMouseDown sur certains éléments:

  <Menu.Item
    icon={<DashboardOutlined style={{ fontSize: '21px' }} />}
    onClick={onClickDash}
    onMouseDown={handleEvent}
  >
    Dashboard
  </Menu.Item>

Et puis le handleEvent:

const handleEvent = (event) => {
  if (event.type === 'mousedown') {
    console.log('MOUSE DOWN', event);
  } else {
    console.log('MOUSE UP', event);
  }
};

Le problème est, je ne peux pas trouver un moyen de détection de la molette de la souris vers le bas en particulier. Comment puis-je détecter ça? L'officiel de mozilla docs ne pas fournir un exemple soit.

events javascript mouse reactjs
2021-11-23 19:42:22
1

La meilleure réponse

-2

Avertissement - Au moment de la rédaction, j'ai été seulement cibler le navigateur google Chrome.

Lorsqu'un utilisateur fait défiler un DOM de défilement événement est déclenché, un événement qui est intégrée dans chaque navigateur par défaut. Réagir a sa propre méthode, onScroll, qui peut être appelée sur n'importe quel composant lorsque le défilement de l'événement est déclenché. L'utilisation de ce onScroll méthode, nous pouvons l'appeler une fonction en tant que résultat d'un utilisateur de défilement.

Exemple;

<SomeComponent onScroll={someMeothod} />

Comme avec n'importe quel DOM événement, d'un objet d'événement est créé avec des propriétés qui peuvent fournir des informations utiles sur l'événement et l'élément de l'événement est lié aussi. Un défilement de l'événement est déclenché pour chaque pixel de l'utilisateur fait défiler. Dans ce cas, nous sommes seuls l'identification de l'utilisateur a fait défiler jusqu'à la fin de l'élément parent contenant notre contenu.

Le calcul lorsque l'utilisateur a fait défiler jusqu'à la fin d'un conteneur

Ajouter un onScroll méthode à l'élément contenant le contenu qui appelle une fonction sur les composantes de la classe:

<div className="content-container" onScroll={this.handleScroll}>
  // Your content
</div>

Puis créer le handleScroll fonction pour gérer l'événement scroll:

class MyComponent extends React.Component {
  handleScroll = e => {
    let element = e.target
    if (element.scrollHeight - element.scrollTop === element.clientHeight) {
      // do something at end of scroll
    }
  }
  render() {
    return (
      <div className="content-container" onScroll={this.handleScroll}>
        // Your content
      </div>
    )
  }
}

Examinons ce qui se passe dans le handleScroll méthode pour rendre les choses un peu plus clair...

e - ce qui correspond à l'événement lui-même. C'est un objet qui est créé par le navigateur avec les propriétés associées à l'événement scroll, nous travaillons avec.

laissez-élément = e.cible - cela nous permet de trouver l'élément qui a envoyé l'événement à l'aide de (e.cible) et l'affecter à la variable que l'on peut utiliser dans le reste du code.

Maintenant, nous (notre code) sait à quel élément est le défilement et nous avons assigné à une variable dans nos méthodes de portée, on peut accéder aux propriétés de l'élément fourni par le navigateur et de déterminer si l'utilisateur a fait défiler jusqu'à la fin.

de l'élément.scrollHeight - c'est la hauteur, en pixels, des éléments de contenu, y compris le contenu n'est pas visible sur l'écran en raison de css overflow.

de l'élément.scrollTop - la hauteur en pixels que d'un élément de contenu défile verticalement.

de l'élément.clientHeight - la hauteur en pixels de la partie de défilement de l'élément.

En utilisant les propriétés ci-dessus, nous pouvons calculer si l'utilisateur a défiler vers le bas de l'élément en comparant la somme négative de la scrollHeight et scrollTop à la clientHeight. Si ils sont de la même, l'utilisateur dispose d'un défilement vers le bas de l'élément. En les enveloppant dans un if déclaration, nous pouvons donc vous assurer que notre fonction au sein de l'instruction si la portée n'est exécutée que lorsque l'utilisateur a fait défiler jusqu'à la fin de la div et de notre if la condition est remplie.

2021-11-23 20:22:07

Ce n'est pas ce que j'ai demandé, j'ai demandé à propos de la "onMouseDown" événement concernant le défilement de la souris bouton, pas la roue de défilement de l'événement.
Ericson Willians

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................