[英]I am trying to change image by clicking buttons using React.js but getting error
I want my code to change Image when I click a button but it is giving me error saying "Warning: Expected onClick
listener to be a function, instead got a value of object
type."我希望我的代码在单击按钮时更改图像,但它给了我错误消息“警告:预期
onClick
侦听器是 function,而不是object
类型的值。” Here is the code:-这是代码: -
import React from 'react'
import './BigAd.css'
import ad1 from './ad1.jpg'
import ad2 from './ad2.jpg'
import ad3 from './ad3.jpg'
import ad4 from './ad4.png'
export default function BigAd() {
const ChangeImage = async (fileName)=>{
let img = document.querySelector("#BannerAd")
img.setAttribute("src", fileName)
}
return (
<div>
<div className="container">
<img id='BannerAd' src={ad1} alt="Ad"/>
<button onClick={ChangeImage({ad1})}>button 2</button>
<button onClick={ChangeImage({ad2})}>button 3</button>
<button onClick={ChangeImage({ad3})}>button 1</button>
<button onClick={ChangeImage({ad4})}>button 4</button>
</div>
</div>
)
}
So my method was completely wrong this is not how you manipulate DOM in react.js.所以我的方法是完全错误的,这不是你在 react.js 中操作 DOM 的方式。 I had to use UseState to get my code working here is how I fixed it:-
我必须使用 UseState 来让我的代码在这里工作,这就是我修复它的方式:-
import React, {useState} from 'react'
import './BigAd.css'
import ad1 from './ad1.jpg'
import ad2 from './ad2.jpg'
import ad3 from './ad3.jpg'
import ad4 from './ad4.png'
export default function BigAd() {
const [Image, setImage] = useState(ad1)
const ChangeImage = async (Image)=>{
setImage(Image);
}
return (
<div>
<div className="container">
<img id='BannerAd' src={`${Image}`} alt="Ad"/>
<button onClick={() => ChangeImage(ad1)}>button 1</button>
<button onClick={() => ChangeImage(ad2)}>button 2</button>
<button onClick={() => ChangeImage(ad3)}>button 3</button>
<button onClick={() => ChangeImage(ad4)}>button 4</button>
</div>
</div>
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.