reactjs - 开始学习反应,我正在尝试使用 unsplash API 构建一个简单的图像搜索,但我无法渲染到页面
问题描述
我已经在这个应用程序上工作了几天了。我有 API 可以登录到控制台 onClick,但无法弄清楚我应该如何将它呈现到页面上。任何帮助将非常感激!
import React, {useState} from "react";
const App = () => { const AUTH = "##########"; const API_URL = `https://api.unsplash.com/photos?query=london&client_id=${AUTH}`;
const [loadImages, setloadImages] = useState([{}]);
async function handleClick(event) {
event.preventDefault();
const response = await fetch(API_URL);
const data = await response.json();
setloadImages(data);
console.log(data) }
return (
<div className="App">
<form className="form">
<div className="input-group mb-3">
<input
type="text"
className="form-control"
placeholder="Search Photos..."
aria-label="Search Photos..."
aria-describedby="basic-addon2"
/>
<button
type="submit"
className="btn btn-primary"
onClick={handleClick}
>
Search
</button>
</div>
</form>
<ul>
{loadImages.map((image) => (
<li>
<img src={image.data} alt=" " />
</li>
))}
</ul>
</div> ); };
export default App;
解决方案
根据 api 的响应,该data
属性在对象上不存在。相反,您应该访问其中一个 URL。此代码段使用原始 URL,但您可能想查看其他代码段
{loadImages.map((image) => (
<li>
<img src={image.urls.raw} alt=" " />
</li>
))}
编辑
要回答它引发无法读取未定义的原始属性(或任何其他属性)的错误的评论,很可能是因为其中一个对象没有此属性。在这种情况下,您可以在渲染图像标签之前进行条件渲染以确保它存在。
{loadImages.map((image) => (
<li>
{ image.urls && <img src={image.urls.raw} alt=" " /> }
</li>
))}
推荐阅读
- crash - system_error:condition_variable 等待失败:参数无效
- windows - 适用于 Windows 和 Mac 的 Bash 脚本
- html - 如何使用import语句,目前在模块之外
- android - 在活动中拖动地图片段的问题
- python - 为什么我的 KNeighborsClassifier 返回一些空预测?
- swift - 解析 Alamofire JSON
- mongodb - 在 mongodb 中查找多个字段
- vba - 我正在编写 vba 代码以从网络上抓取数据,我收到远程服务器机器不存在或不可用的错误
- html - 为什么当我使用焦点代码时 CSS 动画不起作用?
- amazon-web-services - AWS EBS 快照问题