reactjs - 我收到 TypeError:records.map 不是我的反应应用程序中的函数
问题描述
我收到此错误:
TypeError:records.map 不是我的 Records.js 文件中的函数
请问我的代码做错了什么?
这是我的app.js
:
const App = () => {
const [records, setRecords] = useState([])
const [loading, setLoading] = useState(false)
useEffect(() => {
const fetchRecords = async () => {
setLoading(true)
const res = await fetch('http://api.enye.tech/v1/challenge/records')
const data = await res.json();
setRecords(data)
setLoading(false)
}
fetchRecords()
// eslint-disable-next-line
}, [])
console.log(records);
return (
<Fragment>
<SearchBar />
<div className='container'>
<h2>Records Firstnames</h2>
<Records loading={loading} records={records} />
</div>
</Fragment>
);
}
我正在渲染从此Records.js
文件中获取的数据:
const Records = ({ records, loading }) => {
if(loading) {
return <Preloader />
}
return <ul className='collection mb-4'>
{records && records.map(record => (
<li key={record.id} className='collection-item'>
{record.FirstName}
{record.LastName}
</li>
))}
</ul>
}
这是我从中获取的 API:
解决方案
据我所知,您records
只是一个对象,因此您无法使用 map 进行迭代 - 您必须遍历 profiles 数组。
改变
setRecords(data)
至
setRecords(data.records.profiles)
推荐阅读
- matlab - 在 MATLAB 中导入多个表
- terraform - 需要帮助了解 Terraform 状态管理
- php - PHP 电子邮件验证和附加 URL
- eclipse - Spring Boot War eclipse 集成
- micronaut - 具有多个查询可选参数的控制器映射不起作用
- hql - 当特定列为空时,HQL 查询选择一组列与选择其他列
- reactjs - 反应示例失败:TypeError:传播不可迭代实例的无效尝试
- feature-engineering - 使用 Deep Feature Synthesis 时如何记录 FeatureTools 派生的常量
- python - 如何计算 Pandas 中的多面手
- xml - 处理自由标记模板中的空白