J'ai un sidenav avec un groupe d'équipes de basket-ball. J'aimerais donc afficher quelque chose de différent pour chaque équipe lorsque l'une d'elles est survolée. De plus, j'utilise Reactjs, donc si je pouvais avoir une variable que je pourrais passer à un autre composant, ce serait génial.
101
Réponses:
Les composants React exposent tous les événements de souris Javascript standard dans leur interface de niveau supérieur. Bien sûr, vous pouvez toujours utiliser
:hover
dans votre CSS, et cela peut être adéquat pour certains de vos besoins, mais pour les comportements plus avancés déclenchés par un survol, vous devrez utiliser le Javascript. Donc, pour gérer les interactions de survol, vous voudrez utiliseronMouseEnter
etonMouseLeave
. Vous les attachez ensuite aux gestionnaires de votre composant comme ceci:Vous utiliserez ensuite une combinaison d'état / d'accessoires pour transmettre l'état ou les propriétés modifiés à vos composants React enfants.
la source
onMouseEnter
onMouseLeave
sont des événements DOM. Ils ne fonctionneront pas sur une coutumeReactComponent
, vous devrez passer les événements comme accessoire et lier ces événements à un élément DOMReactComponent
, comme<div onMouseOver={ () => this.props.onMouseOver }>
ReactJs définit les événements synthétiques suivants pour les événements de souris:
Comme vous pouvez le voir, il n'y a pas d'événement de survol, car les navigateurs ne définissent pas d'événement de survol de manière native.
Vous voudrez ajouter des gestionnaires pour onMouseEnter et onMouseLeave pour le comportement de survol.
ReactJS Docs - Événements
la source
Je sais que la réponse acceptée est grande , mais pour tous ceux qui cherchent un vol stationnaire comme l' impression que vous pouvez utiliser
setTimeout
surmouseover
et enregistrez la poignée dans une carte (de liste disons LET les ids à setTimeout poignée). Surmouseover
effacez la poignée de setTimeout et supprimez-la de la carteEt implémentez la carte comme suit:
Et la carte est comme ça,
Je préfère
onMouseOver
etonMouseOut
parce que cela s'applique également à tous les enfants duHTMLElement
. Si cela n'est pas nécessaire, vous pouvez utiliseronMouseEnter
etonMouseLeave
respectivement.la source
Pour avoir un effet de survol, vous pouvez simplement essayer ce code
Ou si vous voulez gérer cette situation en utilisant le hook useState (), vous pouvez essayer ce morceau de code
Les deux codes ci-dessus fonctionneront pour l'effet de survol, mais la première procédure est plus facile à écrire et à comprendre
la source