【发布时间】:2022-01-13 11:40:26
【问题描述】:
我正在使用 React,只是想要一些关于错误处理的建议。
我在异步函数中有我的 fetch 请求,这个函数在另一个文件夹中,并被导入到我的 App.js 文件中。我这样做是因为我想尝试使用模拟服务工作者进行测试,并通过单独文件中的请求更轻松地阅读它。
通过查看下面的代码,这是错误处理的最佳做法吗?有没有更好更简洁的方法?
这是我的 fetch async 函数,目前我故意提供了错误的环境变量名称,所以它会给我一个 401 未经授权的错误。
require('dotenv').config()
export const collect = async () => {
const key = process.env.REACT_APP_API_KE
try{
const res = await fetch(`http://api.openweathermap.org/data/2.5/weather?q=london&appid=${key}`)
if(res.status !== 200){
throw new Error(res.status)
}
const data = await res.json()
return data
} catch (error){
let err = {
error: true,
status: error.message,
}
return err
}
}
这是在我的 App.js 文件中调用的(目前没有渲染太多)
import { useState } from 'react'
import { collect } from './utilities/collect'
require('dotenv').config()
function App() {
const [data, setData] = useState("")
const [error, setError] = useState({ error: false, status: "" })
const handleFetch = async () => {
let newData = await collect()
if(newData.error){
setError({ error: newData.error, status: newData.status })
}else {
setData(newData)
}
}
return (
<div className="App">
<h1>weather</h1>
<button onClick={handleFetch}>fetch</button>
</div>
);
}
export default App;
任何帮助或建议都会很棒。
【问题讨论】:
标签: javascript reactjs api testing error-handling