Слияние кода завершено, страница обновится автоматически
import { connect } from 'dva';
import { Button, PureComponent, Result } from 'react';
@connect(({ user }) => ({
currentUser: user.currentUser,
}))
export default class ErrorBoundary extends PureComponent {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError() {
// 更新 state 使下一次渲染能够显示降级后的 UI
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// 你同样可以将错误日志上报给服务器
console.log('err', error.toString());
console.log('errorInfo', errorInfo);
if (
process &&
process.env &&
process.env.NODE_ENV &&
process.env.NODE_ENV === 'development'
) {
return null;
}
return this.saveLog(error);
}
saveLog = error => {
const { dispatch, currentUser } = this.props;
dispatch({
type: 'global/saveLog',
payload: {
username: currentUser && currentUser.user_name,
enterprise_id: currentUser && currentUser.enterprise_id,
address: window.location.href,
msg: `错误:${error.toString()}`,
},
});
};
render() {
const { hasError } = this.state;
const { children } = this.props;
if (hasError) {
<Result
status="warning"
title="UI遇到障碍,我们已经记录信息,请重试"
extra={[
<Button type="primary" key="console" onClick={()=>{
window.location = window.location.href
}}>
刷新重试
</Button>
]}
/>
}
return children;
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )