reactjs - 点击图片后如何渲染 div?
问题描述
单击图像时,我正在尝试渲染一个框。根据用户单击的位置,我在框的呈现位置中有此代码。当我们取坐标时。但是每当我单击图像时,什么都没有发生。当我将这个 onClick 函数放在 img 标签中并单击图像时,整个页面完全空白。我希望根据用户单击的位置将框呈现在图像的不同部分
import React, {useState} from 'react'
import mainImage from '../img/marioBrosMain.jpg'
import '../main.css'
import Box from '../pages/box.js'
function Main() {
const [style, setStyle] = useState();
const imageClick = (x, y) => {
return `position: absolute;
z-index: 2;
border-radius: 2px solid red;
border: 2px solid red;
height: 50px;
padding-left: 50px;
margin-left: 1450px;
left:${x}px;
top:${y}px;`
}
return (
<div id="frame">
<div id="mainImage" style = {style} onClick={e => {
const newStyle =
imageClick(e.target.screenX,
e.target.screenY);
setStyle(newStyle);
}}></div>
<img src={mainImage} className="marioBros____image" />
</div>
)
}
export default Main
解决方案
screenX
并且screenY
是MouseEvent的属性,而不是EventTarget
.
改变
imageClick(e.target.screenX, e.target.screenY);
至
imageClick(e.screenX,e.screenY);
然后再试一次。
您可以验证e.target.screenX
/e.target.screenY
必须undefined
在您记录它们时出现
此外,由于它是一个反应代码,您需要为您的 CSS 属性返回/设置有效style
对象(newStyle
必须是一个对象)和camelCase。
推荐阅读
- python - 从图像opencv python中的像素中减去不同的值
- javascript - Parse Server - 如何从 app.js 或 index.js 调用 Cloud 代码中定义的作业
- python - 带有 ">=" 的类型错误
- php - 如何使用循环中的每个项目
- python - 如何避免在每一行中写入相同的值?
- javascript - 后台脚本事件侦听器在弹出脚本出错后中断
- css - Ioslides_presentation 没有在运行时使用自定义 css shiny_prerendered
- ios - 如何根据数组值获取索引
- r - 通过 lapply 提取包含多个数据框的列表的值,条件是数据框的特定列为正?
- ios - cellForRowAt:更改选项卡时返回 nil