Comments (9)
了解,在推出之前报错会直接白屏,总是需要我们前端进行手动try catch,react16新增了两个生命周期componentdidcatch和static getDerivedStateFromError从框架级别让我们更方便捕捉异常并显示备用ui。其实就是在整个workloop外面包一层try catch,报错时候遍历父组件找到这两个生命周期并把堆栈信息塞给生命周期进行判断。
from daily-question.
错误不抛出,交给catch处理,然鹅并不能预先知道错误类型。。。
from daily-question.
from daily-question.
待答
from daily-question.
从其他文章里看到的 避免错误渲染白屏做异常中间处理的嵌套组件
class ErrorBoundary extends Component {
static getDerivedStateFromError() {
return { hasError: true };
}
state = {
hasError: false,
};
componentDidCatch(error, info) {
// reportError(error, info);
}
render() {
const { hasError } = this.state;
const { children } = this.props;
if (hasError) {
return
}
return children;
}
}
function render(Component, props) {
const rootElement = document.getElementById("root");
ReactDOM.render(
<Component {...props} />
,
rootElement
);
}
作者:蚂蚁保险体验技术
链接:https://juejin.im/post/5de91d0f51882512400acafd
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
from daily-question.
是 react 内的一个钩子,用于在组件内发生了 js 错误时候的错误处理。
使用场景是在发生 js 报错的时候不至于说白屏,可以转去别的页面提示用户这里报了错,转用别的去到去继续操作。
from daily-question.
这不就是try catch么。。。
from daily-question.
顺带一句suspense的原理好像也是这个
from daily-question.
嵌套的比较深的组件存在出错的风险,组件自身没有容错机制,会逐层交给外层组件处理。这个过程会导致整个组件树销毁。页面结果就是白屏。而且生产环境不会报出有效的错误信息,不好定位问题。
使用ErrorBoundary 就是在可能出错的组件上套一层组件,在这个新的组件中去容错
from daily-question.
Related Issues (20)
- 【Q736】前端如何对分支环境进行部署 HOT 2
- 【Q737】如何取得一个数字的小数部分与整数部分 HOT 2
- 【Q738】websocket 和短轮询有什么区别 HOT 3
- 【Q739】webpack 中是如何处理 new URL 资源的
- 【Q740】vite 中是如何处理 new URL 资源的
- 【Q741】我们上传图片为 Blob/File 对象时,是如何向服务器端传送数据的 HOT 1
- [bug] B站的链接贴错了 HOT 2
- 引用仓库错了 HOT 2
- `<script type="module">` HOT 1
- 多阶段构建并不需要 docker-compose HOT 1
- 【Q742】大文件上传,如何获取到读取进度? HOT 1
- 代码
- [feature request]面试题添加难度排序以及一键生成一份面试题的工具 HOT 2
- 【Q747】如何实现一个 omit/omitBy 函数 HOT 6
- 【Q748】在 babel 编译为低版本 ES 时,为何能够编译可选链之类语法,但无法编译 API HOT 1
- 【Q743】实现 batchFn 函数,可以批量执行函数 HOT 4
- 【开源自荐】推荐一个每日更新的前端面试题库 HOT 1
- 【Q474】在 react 中,以下父子组件的 useEffect/useLayoutEffect 顺序如何 HOT 1
- 【Q745】webpack 的打包流程是什么样的 HOT 1
- 【Q744】数据库中更新一条记录时,如何自动更新其 updated_at 字段
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from daily-question.