【发布时间】:2021-04-20 15:02:13
【问题描述】:
我创建了一个静态 React 网站并将其托管在 Github 页面上。
如您所见,每当您点击电影或电视剧时,都会出现一个模式,其中包含电影/电视海报(从 OMDb API 加载)和一些元数据。问题是内容加载太慢。内容出现之前需要一秒钟(有时更长时间)。
我知道我不能指望它加载得更快,但我不想在一切看起来不错(即完美加载)之前完全不显示模式。也许通过在我们等待时出现“正在加载..”。它不必花哨,因为它最多只会在屏幕上显示 1-2 秒。
您对 React 初学者有什么建议吗?
相关代码:
function ImdbInfo(props) {
const [data, setData] = useState({ imdbData: [] });
useEffect(() => {
const imdbId = getImdbId(props.url);
const fetchData = async () => {
const result = await axios(
`https://www.omdbapi.com/?i=${imdbId}&apiKey=${apiKey}`,
);
setData(result.data);
};
fetchData();
}, []); // eslint-disable-line react-hooks/exhaustive-deps
return (
<div className="modal-content">
<div className="metadata" onClick={props.handleClose}>
<h1 className="modal-header">{data.Title}</h1>
<img className="modal-poster" src={data.Poster} alt="poster" />
<p className="modal-info">{getDirectorOrWriter(data)}</p>
<p className="modal-info">IMDb Rating: {getImdbScore(data.Ratings)}</p>
</div>
{createImdbLink(props.url)}
</div>
);
}
还有:
const MediaModal = ({ handleClose, show, data }) => {
const showHideClassName = show ? 'modal display-block' : 'modal display-none';
const imdbData = show ? <ImdbInfo url={data.imdbLink} handleClose={handleClose} /> : <div />;
return (
<div className={showHideClassName} onClick={handleClose}>
<section className='modal-main'>
{imdbData}
</section>
</div>
);
};
export default MediaModal;
【问题讨论】:
标签: reactjs