javascript-如何在React错误边界中使用自定义错误类型?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-如何在React错误边界中使用自定义错误类型?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2060字,纯文字阅读大概需要3分钟。
内容图文
我在组件树的顶部设置了一个错误边界,如下所示:
renderApp() {
return (
<ErrorBoundary>
{ this.props.children }
</ErrorBoundary>
);
}
如果错误在树上找到,错误边界将呈现一个简单的错误页面,并将错误本身作为支持传递:
componentDidCatch(error, info) {
this.setState({
hasError: true,
error
});
}
render() {
if (this.state.hasError) {
return (
<ErrorPage error={this.state.error}/>
);
}
return this.props.children;
}
我已经开始定义自定义错误,以便在引发某些异常时抛出应用程序错误,只需扩展Error类即可:
class CustomError extends Error {}
然后在我的组件中,抛出这些自定义错误,我想在我的错误页面中检测这些错误,并根据它们的类型构造消息传递.例如,如果我在组件树中进一步抛出此错误:
throw new CustomError('This is the custom error message');
我希望能够在错误页面上嗅探该类型,并显示与该类型相关的消息.
import CustomError from '../../errors/custom-error';
// This code has obviously been edited for brevity's sake
class ErrorPage extends React.Component {
render() {
if (this.props.error instanceof CustomError) {
errorMessage = "A custom error occurred.";
}
return <div>{errorMessage}</div>;
}
}
但是,在错误页面中,React只识别出this.props.error是Error的实例,而不是CustomError的实例.如果我抛出一个TypeError而不是一个CustomError,那么错误页面可以检测到错误类型.但是,传递自定义错误类型会导致错误页面对错误类型一无所知,而这是一个错误,这显然会破坏定义自定义错误类型的目的.我在这里想念什么?这是React中的错误吗?任何输入将不胜感激.
我使用React 16.0.0发现了这个问题,已经更新到16.2.0,问题仍然存在.
解决方法:
问题不在于React,而是与Babel有关,我认为您正在使用.类的编译方式不支持将instanceof与扩展了Error等本机类的类一起使用.
有关更多信息,请参见此Babel问题:https://github.com/babel/babel/issues/3083
内容总结
以上是互联网集市为您收集整理的javascript-如何在React错误边界中使用自定义错误类型?全部内容,希望文章能够帮你解决javascript-如何在React错误边界中使用自定义错误类型?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。