React TypeScript catch块内无法触发state状态更新如何解决
错误原因
- Promise的
catch方法必须接收一个回调函数作为入参,你当前代码直接向catch传入了对象字面量{ setError(false); },完全不符合语法要求,所以触发类型匹配报错。 - 额外逻辑问题:你当前在catch块内写的是
setError(false),和你需要的「请求出错时更新error状态」的需求逻辑相反,就算语法修正后也不能实现预期功能。
修复后的代码
const [error, setError] = useState<any>(false); useEffect(() => { axios.get(`${backendUrl}/${filteredlocation}`) .then(res => { setData((state:any) => [...state, res?.data]); // 请求成功时重置错误状态 setError(false); }).catch((err) => { // 请求出错时更新错误状态,可根据需要存储错误对象或仅标记错误状态 setError(true); // 若要存储错误详情可写为 setError(err) }); }, []);
内容的提问来源于stack exchange,提问作者Francisco Aguilera
相关产品推荐
相关产品推荐

