【发布时间】:2019-08-22 04:01:55
【问题描述】:
我有一个反应组件,我正在进行网络调用来设置状态。最终我想把它传递给其他子组件,但现在只是让管道工作。
在调用我的后端(应用程序中的快速服务器)时,我正在尝试正确捕获错误。我试图通过从不存在的端点获取数据来强制出错。这应该抛出一个 404,因为它不存在,对吧?如何在 catch 语句中显示该错误?现在我的错误是SyntaxError: Unexpected token < in JSON at position 0 at eval (app.js:61)
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
data: null
};
}
componentDidMount() {
fetch('/api/wrong_endpoint').then((data) => {
return data.json();
}).then((body) => {
this.setState({data: body})
}).catch(err => console.log(err));
}
render() {
console.log('logging the states');
console.log(this.state.data);
return (
<div>
<ContactList />
<ContactDetail />
<AddContactModal />
</div>
);
}
}
【问题讨论】:
-
查看wretch 文档。它是
fetch()的包装库,既能回答您的问题,也可能您有兴趣使用它来处理错误。除非您检查状态,否则 404 不会转到fetch()捕获(在返回data.json()并抛出您自己的错误之前) -
您是在尝试打印错误状态代码/消息还是什么?
-
@charlietfl 好的。检查这样的状态并打印错误是否相当标准?这是我打网络电话的地方,不是吗?最终,此代码将从组件中移出并移至某些特定于服务器通信的文件中。
-
@wentjun 是的,这就是我想要做的。
-
是的......您需要在使用
fetch()时创建自己的样板错误处理。我更愿意让图书馆为我做这件事。也使发布数据更简单
标签: javascript reactjs http express fetch