first create ref for image tag using this way
in class component
const imagRef=React.createRef();
in functional component
const imageRef=useRef();
assign it to image tabg like this
<img src={igo} ref={imageRef} />
and use imageRef to change the src like this
if(reasultl === 'true'){
imageRef.current.src = {igo}
}
else{
imageRef.current.src = {placeholder}
}
however i this can be done without refs,as shown in armans's answer.
lets do this with state in functional component
import { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
const [loading, setLoading] = useState(true);
const [image, setImage] = useState(
"https://c.tenor.com/I6kN-6X7nhAAAAAj/loading-buffering.gif"
);
useEffect(() => {
if (loading === true) {
setTimeout(() => {
if (loading === true) {
setLoading(false);
setImage(
"https://post.healthline.com/wp-content/uploads/2020/08/3180-Pug_green_grass-732x549-thumbnail-732x549.jpg"
);
}
}, 1000);
}
}, [loading, setLoading, setImage]);
return (
<div className="App">
<img src={image} alt="okay" />
</div>
);
}
try here in sandbox
now do the same using refs
import { useEffect, useState, useRef } from "react";
import "./styles.css";
export default function App() {
const [loading, setLoading] = useState(true);
const imageRef = useRef();
useEffect(() => {
if (loading === true) {
setTimeout(() => {
if (loading === true) {
setLoading(false);
}
}, 1000);
}
}, [loading, setLoading]);
useEffect(() => {
if (loading === true) {
imageRef.current.src =
"https://c.tenor.com/I6kN-6X7nhAAAAAj/loading-buffering.gif";
} else {
imageRef.current.src =
"https://post.healthline.com/wp-content/uploads/2020/08/3180-Pug_green_grass-732x549-thumbnail-732x549.jpg";
}
}, [loading, imageRef]);
return (
<div className="App">
<img ref={imageRef} alt="okay" />
</div>
);
}
try it in sandbox
hope this will help.