为什么页面刷新时发起的GET请求会出现Network Error错误?
问题出现的原因
- useEffect依赖配置错误引发无限循环请求:你将请求触发后才会更新的
coinData、currentUser两个状态加入了useEffect的依赖数组,每次请求成功更新状态都会重新触发useEffect执行新一轮请求,短时间内发起的大量请求要么触发CoinGecko接口限流规则,要么导致请求队列阻塞,最终抛出网络错误。 - 请求无异常捕获逻辑:两个异步请求函数均未做
try/catch包裹,任意请求出现4xx/5xx返回、跨域、服务无响应等问题时,都会直接抛出未被捕获的运行时错误。 - 刷新时请求参数异常导致非法请求:
- 刷新页面时用户会话
session可能还未完成初始化,session?.id为undefined,会导致用户接口请求路径变为http://localhost:5000/api/users/undefined,该请求基本都会返回404错误。 - 若刷新时
getServerSideProps返回的data.id为空,CoinGecko的请求地址会变为https://api.coingecko.com/api/v3/coins/undefined,接口会直接返回400错误。
- 刷新页面时用户会话
修复参考方案
- 调整useEffect依赖数组为
[data.id, session?.id],仅在核心参数变更时才触发请求,避免无限循环。 - 给所有异步请求添加
try/catch块,主动捕获并处理请求异常。 - 发起请求前先判断
data.id和session?.id是否存在,参数为空时不发起无效请求。
内容的提问来源于stack exchange,提问作者Eric Pezzulo
相关产品推荐
相关产品推荐

