reactjs - 如何在 ReactJS 挂钩中映射数据?
问题描述
我想通过 API 收集 JSON 数据并将其呈现为 JSX 以显示,但我是反应钩子的新手,我看到一个错误,说 data.map 不是函数有人可以帮助我吗?
这是我的代码
import React, {useState, useEffect} from "react";
import axios from "axios";
import ModalSubHeader from "../../styles/ModalSubHeader";
import CollectionHolder from "../../styles/CollectionHolder";
import {CollectionOption, CollectionOptionInner} from "../../styles/CollectionOption";
import CollectionIcon from "../../styles/CollectionIcon";
import CollectionIcons from "../../../../images/index";
function Collection(props) {
const [collectionList, setCollectionList] = useState(null);
useEffect(() => {
axios
.get("https://reg.my-waste.mobi/collections?project_id=556&district_id=556&zone_id=zone-z1250-z1261")
.then(({data}) => {
data = data.collection.types;
const collections = data.map((number) =>
<CollectionOption>
<CollectionOptionInner>
<CollectionIcon src={CollectionIcons[number.iconicShape]} />
{number.title}
</CollectionOptionInner>
</CollectionOption>
);
setCollectionList(collections)
})
console.log(CollectionIcons);
})
return(
<div>
<ModalSubHeader>What type of collection or event would you like to be reminded about?</ModalSubHeader>
<CollectionHolder>
{collectionList}
</CollectionHolder>
</div>
)
}
export default Collection;
解决方案
此端点返回对象而不是数组,因此您应该对其进行一些修改 Object.values(data.collection.types).map(collection => { .... })
推荐阅读
- c++ - 在 const 字符串中使用不同的编码
- node.js - 如何向 socket.io 服务器端命名空间上的所有客户端添加侦听器
- coq - 替换/重写存在假设
- python - 多处理进程、队列和对象
- python - 如何切片 Python 列表项?
- razor - .NET Core (3.0) MVC - 如何重定向到不同的视图/.cshtml 页面?
- javascript - 滚动Highcharts中图表的X轴时如何修复工具提示的位置
- reactjs - 尝试使用 React-SearchKit 连接到 ElasticSearch 7 时出现错误 405(方法不允许)
- sql-server - 有没有办法使用 SQL Server 的代码片段功能来调用存储过程,其参数为空值?
- wordpress - 基于 aria 更改 SASS 父样式