【发布时间】:2020-09-02 02:13:24
【问题描述】:
我对反应很陌生,我正在尝试做这个简单的任务,即在图像加载时显示微调器。它的工作方式与我期望的前两次相同,即微调器加载,然后加载图像。但在那之后,微调器继续旋转并且图像不加载。这是可以包含在 index.js 中的 App.js 代码:
import React from "react";
import CircularProgress from "@material-ui/core/CircularProgress";
export default function App() {
const [loaded, setLoaded] = React.useState(false);
const [image, setImage] = React.useState({
src: "https://via.placeholder.com/60"
});
const handleClick = () => {
setLoaded(false);
setImage({ src: "https://picsum.photos/200/300" });
};
const getProgress = () => {
console.log("-----inside getProgress", loaded);
return (
<CircularProgress
color="secondary"
style={!loaded ? { display: "block" } : { display: "none" }}
/>
);
};
return (
<div className="App">
<>
<img
src={image.src}
alt="a placeholder"
onLoad={() => setLoaded(true)}
style={loaded ? { display: "inline-block" } : { display: "none" }}
/>
{!loaded && getProgress()}
<br />
<a href="#" onClick={handleClick}>
Click here
</a>
</>
</div>
);
}
这里是 index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
const rootElement = document.getElementById("root");
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
rootElement
);
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
const rootElement = document.getElementById("root");
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
rootElement
);
我想为什么会发生问题是因为第三次 onLoad 没有将加载设置为 true,因此它一直显示微调器。但让我感到困惑的是,第一次点击“点击这里”链接与第二次点击该链接非常相似,而且次数不限。为什么输出不一样?我也在寻找如何解决这个问题并让它变得更好。我在 StackOverflow 和其他地方引用了很多材料,但我无法解决这个问题。
感谢任何帮助!
【问题讨论】:
标签: reactjs