React V16 错误处理(componentDidCatch 示例)
React 早就需要一个处理错误的解决方案。
从早期的 React 开发以来,一个小的组件抛出错误将会破坏整个应用程序,这种情况相当普遍。 最近在 github 上证实,React Core 决定实现一个内置的函数叫做 componentDidCatch!我(原作者)个人也在 2015 年 10 月 21 日做了一些投入,但是从 2014 年 11 月 3 日才开始正式跟踪这个错误/解决方案! 我们再耐心等待 996 天!(译者注:今天(2017-09-27) React 16 正式发布) 让我们来看看吧!React 16 将提供一个内置函数 在线示例:CodeSandbox https://facebook.github.io/re...(中文:React 16 的异常/错误处理) 重要提示:错误在渲染阶段中被捕获,但在事件处理程序中不会被捕获。示例按钮 “button will not throw” 将不会使用错误边界,但错误信息仍将显示在 javascript 控制台中。 我强烈建议您点击此代码并查看示例组件。下面是一个基本的 class PotentialError extends React.Component { constructor(props) { super(props); this.state = { error: false }; } componentDidCatch(error,info) { this.setState({ error,info }); } render() { if (this.state.error) { return <h1>Error: {this.state.error.toString()}</h1>; } return this.props.children; } } 然后在顶部或任何地方,你可以这样使用它: <PotentialError><AwesomeApp /></PotentialError> 另一个令人敬畏的特性 {this.state.info && this.state.info.componentStack} 这将告诉你组件在哪里失效! 让我知道你正在使用错误边界! 欢迎关注我的公众号,关注前端文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |