【发布时间】:2021-04-29 14:12:44
【问题描述】:
我是 React 新手,但遇到了问题。 如何遍历数组中的数组? 尝试使用 map() 方法迭代数组时,出现错误
我的代码:
import React, {useState, useEffect} from 'react';
import Header from '../modules/header/header';
import Footer from '../modules/footer/footer';
import './pages.scss';
function PageWorksItem({ match, location }) {
const { params: { id } } = match;
const [error, setError] = useState(null);
const [isLoaded, setIsLoaded] = useState(false);
const [works, setItems] = useState([]);
useEffect(() => {
let cleanupFunction = false;
fetch(`http://localhost:3001/works/${id}`)
.then(res => res.json())
.then(
(result) => {
console.log(result);
setIsLoaded(true);
if(!cleanupFunction) setItems(result);
},
(error) => {
setIsLoaded(true);
setError(error);
}
)
return () => cleanupFunction = true;
}, [])
if (error) {
return <div className="works error">Error: {error.message}</div>;
} else if (!isLoaded) {
return <div className="works loading">. . .</div>;
} else {
return (
<>
<Header />
<div className="works item">
{works.tags.map(item => (
<li>{item}</li>
))}
</div>
<Footer />
</>
);
}
}
export default PageWorksItem;
JSON 片段:
{
"works": [
{
"id": 1,
"name": "21 one line SPA images",
"cat": "Illustrations",
"tags": ["one", "two", "free"]
}
]
}
如果您指定 {works.tags} 或使用索引 {works.tags[0]} - 一切正常,但如果您遍历数组,则会发生错误。
【问题讨论】:
-
你能显示
console.log(result);的结果吗? -
PageWorksItem应该返回一些东西! -
@Viet
{ "id": 1, "name": "21 one line SPA images", "cat": "Illustrations", "tags": [ "one", "two", "free" ] } -
您的
works状态是对象,它应该是数组才能使用地图功能。 -
如果你做 spreadOperator: setItems({...result})?
标签: javascript json reactjs