javascript - Api 没有在 reactJs 中获取
问题描述
我正试图用它的钥匙取食物。在邮递员 api 中工作正常,但它没有响应。后端代码
app.get('/foods/:key', (req, res) => {
foodsCollection.find({ key: req.params.key }).toArray((err, documents) => {
res.send(documents[0])
})
})
前端代码
const { key } = useParams()
const [foodById, setFoodById] = useState({})
useEffect(() => {
fetch(`http://localhost:5000/foods/${key}`)
.then((res) => res.json())
.then((data) => {
setFoodById(data)
})
}, [key])
解决方案
尽管您在上面添加了一些图像,但最重要的是缺少,即浏览器的开发人员工具说明了问题所在。Console
您应该在选项卡中以及该特定请求的选项卡中看到一些消息Network
(如果确实正在发出)。除非有人看到这一点,否则很难帮助您解决问题。
如果您还没有,我建议使用create-react-app (CRA) 搭建任何 React 应用程序。这将为您提供一个可以开始工作的应用程序。您可以忽略开发中与CORS相关的问题,如果使用 CRA,则通过将"proxy": "http://localhost:5000"
, 添加到您的package.json
文件中,有关此方法的更多信息,请参见此处,但请记住,这仅适用于本地开发。您也可以通过运行标志来启动Chrome以忽略网络安全,但这确实不是一个好主意,更多的是一种快速确定您是否遇到 CORS 问题的方法,因为 Chrome 会掩盖一些与 CORS 相关的问题,当事实上他们不是。--disable-web-security
chromium --disable-web-security
我还建议将您的获取代码更改为使用await
,因此您将拥有:
const response = await fetch(`http://localhost:5000/foods/${key}`);
if (!response.ok) {
console.error(`Error message: ${response.statusText} ${response.status}`);
}
const result = response.json();
console.log(result);
这不是必需的,但我总是发现它比方法更容易阅读then/catch/finally
。
推荐阅读
- javascript - Javascript 对象作为空对象传递给控制器“未捕获的 ReferenceError:未定义数据”
- r - 从 bookdown 输出 github markdown
- javascript - 数据抓取:Javascript 返回数据:image/svg 而不是 URL
- python - 获取列表可点击
- html - div 不随内容扩展,不清除其他元素
- python - 逗号分隔符 CSV 导入为 Pandas 数据框
- c++ - 如何在 Visual Studio 中为 CUDA 项目启用单独编译
- ruby-on-rails - Rails:为相对大量的模型添加相同的 `belongs_to` 语句的 DRY 方式
- shopify - 在 Shopify Liquid 中,有没有办法输出一些与供应商匹配的产品?
- eclipse - eclipse kotlin 插件是否编译 kotlin 代码?