reactjs - 未处理的拒绝(错误):请求失败,响应中的状态码为 404
问题描述
import React, { useEffect, useState } from 'react';
import axios from 'axios';
const Api = () => {
const [num, setNum] = useState();
useEffect(() => {
async function getData() {
const res = await axios.get(`https://pokeapi.co/api/v2/pokemon/${num}`);
console.log(res.data.name);
}
getData();
})
return (
<>
<h1>You Choose {num} value</h1>
<select value={num} onChange={(event) => {
setNum(event.target.value)
}}>
<option value="1">1</option>
<option value="23">23</option>
<option value="34">34</option>
<option value="25">25</option>
<option value="12">12</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="5">5</option>
<option value="34">34</option>
<option value="20">20</option>
</select>
</>
)
}
export default Api;
解决方案
您的 API 返回 404,因为num未定义。执行时,代码将调用https://pokeapi.co/api/v2/pokemon/undefined
你可以做的事情来解决它:
- 给 num 一个初始值:
const [num, setNum] = useState(1);
- 调用 API 时捕获错误。
- 与您的问题无关,但您必须为函数添加第二个参数
useEffect
:当第二个参数更改时,执行第一个参数。
推荐阅读
- ruby-on-rails - rails条件belongs_to关系
- security - SMA390 RPC 端口对面向公众的 IP 没有响应
- javafx - 为什么按钮什么都不做?javafx
- python - 在 numpy 矩阵中搜索向量
- javascript - 如何在所有浏览器的滚动视图结束时启用弹跳效果?
- c# - 在 Visual Studio 中使用 DB2 选择 N 行
- node.js - Winston - MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏
- excel - 使用 isNumeric 从地址中提取邮政编码
- c - 仅使用小于 0xFF 的数字获取 0x55555555,| 和 <<
- python - 比较不同大小的数据框,如果满足条件则创建一个新的