尝试使用 React js 访问数组中的对象时出现错误 gen[0] 未定义
Error gen[0] is undefined when trying to access an object in an array with React js
我目前在尝试访问从 PokeApi 提取的数组中的对象时遇到问题
这是我的抓取 API,效果很好:
const [gen, setGen] = useState([]);
const [loading, setLoading] = useState(false);
useEffect(() => {
setLoading(true);
axios
.get("https://pokeapi.co/api/v2/generation")
.then((res) => {
return res.data.results;
})
.then((results) => {
return Promise.all(results.map((res) => axios.get(res.url)));
})
.then((results) => {
setLoading(false);
setGen(results.map((res) => res.data));
});
}, []);
console.log(gen);
这是我要显示的部分内容:
<h2 className='gen_container_inner_title'>{gen[0].name}</h2>
<h3 className='gen_container_inner_region'>{gen[0].main_region.name}</h3>
我还用同样的方法从另一个 API URL 获取了另一个
问题是有时它可以工作并显示所需的信息,但有时它会说
gen[0] is undefined
我不知道我做错了什么以及为什么每次都不起作用
编辑:代码 nt 工作在里面:
{loading ? (
<BarWave width="40px" height="20px" color="#cc0000" />
) : (
您的 gen
数组在第一次呈现时可能没有项目。
您可以使用 optional chaining operator(?.) along with nullish coalescing operator(??) 来消除错误。
<h2 className='gen_container_inner_title'>{gen?.[0]?.name ?? ""}</h2>
<h3 className='gen_container_inner_region'>{gen?.[0]?.main_region?.name ?? ""}</h3>
我目前在尝试访问从 PokeApi 提取的数组中的对象时遇到问题
这是我的抓取 API,效果很好:
const [gen, setGen] = useState([]);
const [loading, setLoading] = useState(false);
useEffect(() => {
setLoading(true);
axios
.get("https://pokeapi.co/api/v2/generation")
.then((res) => {
return res.data.results;
})
.then((results) => {
return Promise.all(results.map((res) => axios.get(res.url)));
})
.then((results) => {
setLoading(false);
setGen(results.map((res) => res.data));
});
}, []);
console.log(gen);
这是我要显示的部分内容:
<h2 className='gen_container_inner_title'>{gen[0].name}</h2>
<h3 className='gen_container_inner_region'>{gen[0].main_region.name}</h3>
我还用同样的方法从另一个 API URL 获取了另一个
问题是有时它可以工作并显示所需的信息,但有时它会说
gen[0] is undefined
我不知道我做错了什么以及为什么每次都不起作用
编辑:代码 nt 工作在里面:
{loading ? (
<BarWave width="40px" height="20px" color="#cc0000" />
) : (
您的 gen
数组在第一次呈现时可能没有项目。
您可以使用 optional chaining operator(?.) along with nullish coalescing operator(??) 来消除错误。
<h2 className='gen_container_inner_title'>{gen?.[0]?.name ?? ""}</h2>
<h3 className='gen_container_inner_region'>{gen?.[0]?.main_region?.name ?? ""}</h3>