obtenir les coordonnées de la souris en de Réagir et de jQuery
J'essaie d'obtenir les coordonnées relatives de la souris sur un élément de Réagir à l'aide de jQuery.
Mon code ne semble pas fonctionner et il n'y a pas les erreurs de la console.
code:
index.html
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="stylesheets.css" >
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="ja.js" type="text/javascript"></script>
<title>Where's Waldo</title>
</head>
<div id="root"></div>
</body>
</html>
ja.js (fonction jQuery)
jQuery(function($) {
var x,y;
$("#waldo1").mousemove(function(event) {
var offset = $(this).offset();
x = event.pageX- offset.left;
y = event.pageY- offset.top;
$("#coords").html("(X: "+x+", Y: "+y+")");
});
});
composant
import React, { Component } from 'react'
import Timer from './timer'
class Level1 extends Component {
render () {
return (
<div>
<div id="gameBoard">
<img id="waldo1" src={require('../images/waldo1(1).jpg')} alt="waldo"/>
</div>
<h2 id="coords"></h2>
<Timer start={Date.now()}/>
</div>
) //return
} //render
} //component
export default Level1
J'entends jQuery ne débite pas jouer gentil avec réagir. Est ma syntaxe correcte ou est-il une meilleure façon entièrement?
Merci.
- e.syntheticEvent à partir d'un onMouseMove réagir de rappel m'a aidé
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont mentionné, le problème est que réagir a pas rendu de votre composante pour les DOM lorsque jQuery tente de joindre l'écouteur d'événement.
Vous n'avez pas besoin de jQuery pour faire tout cela, une meilleure approche est d'utiliser la Réagir événements:
Exemple stylet: https://codepen.io/CarlosEME/pen/XWWpVMp
nativeEvent
et l'utilisatione.nativeEvent.offsetX
ete.nativeEvent.offsetY
refs
à Réagir, vous pouvez donner tout composant de référence:<div ref="element" />
et ensuite vous pouvez faireconst elem = this.refs.element
pour obtenir l'Élément DOM lui-même. (Dans les anciennes versions de Réagir vous devez utiliserthis.refs.element.getDOMNode()
). Le stylo que j'ai posté a un exemple sur la façon de le faire.onMouseMove={this._onMouseMove.bind(this)}
sur le div parent du composant, uniquement lorsque la souris se déplace dans l'élément h1 t-il mettre à jour l'état, quand j'ai essayer de mettre le code dans la balise img, qui est un enfant de la div principale, l'état ne change pas du tout et apparemment il ne sait pas qu'un gestionnaire d'événement existe. Comment puis-je résoudre ce problème de manière de mouvement dans l'img rend une nouvelle x coordonnée y de la.La question (et la raison de jQuery et de réagir ne vont pas bien ensemble) est susceptible de réagir n'a pas rendu les DOM cet élément par le temps jQuery est d'essayer de fixer l'écouteur d'événement.
Vous devriez regarder pour la fixation des écouteurs d'événement, réagit à l'aide de méthodes. https://facebook.github.io/react/docs/events.html#mouse-events
Cela devrait fonctionner pour vous: