提问人:Mateen 提问时间:11/17/2023 最后编辑:isherwoodMateen 更新时间:11/17/2023 访问量:53
获取图像元素的“src”属性
Getting the "src" property of image elements
问:
我正在构建一个产品显示组件,其中所选图像显示为主要图像。如何在 useState 中获取每个图像的来源?我应该将其作为参数传递给函数吗?我是 React 的新手,因此非常感谢您的帮助。
import { useState } from "react";
function App() {
const [insertImage, setInsertImage] = useState("/images/camaro.jpg");
function setImage() {
setInsertImage("SRC REQUIRED HERE");
}
return (
<div className="flex flex-col gap-3 max-w-3xl m-auto">
<div className="w-full">
<img src={insertImage} className="h-full w-full"></img>
</div>
<div className="flex gap-2">
<div className="w-96" onClick={setImage}>
<img
src="/images/camaro.jpg"
className="transition-opacity delay-75 hover:opacity-70 cursor-pointer active:scale-95"
></img>
</div>
<div className="w-96" onClick={setImage}>
<img
src="/images/mclaren.jpg"
className="transition-opacity delay-75 hover:opacity-70 cursor-pointer active:scale-95"
></img>
</div>
<div className="w-96" onClick={setImage}>
<img
src="/images/gtr.jpg"
className="transition-opacity delay-75 hover:opacity-70 cursor-pointer active:scale-95"
></img>
</div>
<div className="w-96" onClick={setImage}>
<img
src="/images/mclaren.jpg"
className="transition-opacity delay-75 hover:opacity-70 cursor-pointer active:scale-95"
></img>
</div>
</div>
</div>
);
}
export default App;
答:
1赞
DBS
11/17/2023
#1
你可以使用 (MDN Docs) 通过 click 事件访问包装器元素。从那里,你可以使用查询选择器(MDN Docs)搜索包含的图像,然后读取属性:currentTarget
src
更新:setImage()
function setImage(e) {
const src = e.currentTarget.querySelector('img').src
setInsertImage(src)
}
1赞
aarvinr
11/17/2023
#2
为此,您可以更改为接受源的参数,以便可以显示所选图像:setImage()
function App() {
const [insertImage, setInsertImage] = useState("/images/camaro.jpg");
function setImage(src) {
setInsertImage(src);
}
return (
<>
<div className="w-full">
<img src={insertImage} className="h-full w-full"></img>
</div>
<div className="w-96" onClick={() => setImage("/images/mclaren.jpg")}>
<img
src="/images/mclaren.jpg"
className="transition-opacity delay-75 hover:opacity-70 cursor-pointer active:scale-95"
></img>
</div>
</>
);
}
评论