gpt4 book ai didi

javascript - 在 React 和 jQuery 中获取鼠标坐标

转载 作者:行者123 更新时间:2023-12-03 13:05:21 25 4
gpt4 key购买 nike

我正在尝试使用 jQuery 获取 React 中元素中鼠标的相对坐标。

我的代码似乎无法正常工作,并且没有控制台错误。

代码:

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(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+")");
});
});

组件

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

我听说 jQuery 与 React 配合得不太好。我的语法正确还是有更好的方法?

谢谢。

最佳答案

正如其他人所提到的,问题是当 jQuery 尝试附加事件监听器时,React 尚未将您的组件渲染到 DOM。

您根本不需要 jQuery 来执行此操作,更好的方法是使用 React 事件:

class Application extends React.Component {
constructor(props) {
super(props);

this.state = { x: 0, y: 0 };
}

_onMouseMove(e) {
this.setState({ x: e.screenX, y: e.screenY });
}

render() {
const { x, y } = this.state;
return <div onMouseMove={this._onMouseMove.bind(this)}>
<h1>Mouse coordinates: { x } { y }</h1>
</div>;
}
}

示例笔:https://codepen.io/CarlosEME/pen/XWWpVMp

关于javascript - 在 React 和 jQuery 中获取鼠标坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com