@td-design/react-native
Version:
react-native UI组件库
99 lines (82 loc) • 2.59 kB
Markdown
---
title: ErrorBlock - 异常捕获组件
nav:
title: RN组件
path: /react-native
group:
title: 展示组件
path: /display
---
# ErrorBlock 异常捕获组件
内置了两种场景:
- 代码出错,包括 hooks 内出错、render 内出错,这时候会显示默认的应用出错的界面
- 网络请求出错,即代码层面通过`throw new Error(JSON.stringify({type: 'network'}))`,这时候会显示内置的网络请求失败的出错界面
具体测试代码可以参见 `exmaple` 里面的 `ErrorBlockDemo.tsx` 文件
## 效果演示
### 1. 默认异常
```tsx | pure
<Box flex={1}>
<ErrorBlock onError={onError} onRefresh={onRefresh}>
<Demo1 />
</ErrorBlock>
</Box>
```
<center>
<figure>
<img
alt="empty-ios1.png"
src="https://td-dev-public.oss-cn-hangzhou.aliyuncs.com/maoyes-app/1643165357318249571.png"
style="width: 375px; margin-right: 10px; border: 1px solid #ddd;"
/>
</figure>
</center>
### 2. 网络连接异常
```tsx | pure
<Empty customImg={<Image source={require('../../assets/img/pic_empty.png')} />} />
```
<center>
<figure>
<img
alt="empty-ios2.png"
src="https://td-dev-public.oss-cn-hangzhou.aliyuncs.com/maoyes-app/1643165225985160065.png"
style="width: 375px; margin-right: 10px; border: 1px solid #ddd;"
/>
</figure>
</center>
### 3. 自定义异常展示
```tsx | pure
<Box height={300}>
<ErrorBlock
onError={onError}
customNode={
<Box
height={200}
padding="x4"
justifyContent={'center'}
alignItems="center"
borderWidth={1}
borderColor="func600"
>
<Text>我是自定义错误展示</Text>
</Box>
}
>
<Demo1 />
</ErrorBlock>
</Box>
```
<center>
<figure>
<img
alt="empty-ios2.png"
src="https://td-dev-public.oss-cn-hangzhou.aliyuncs.com/maoyes-app/1643165587210140943.png"
style="width: 375px; margin-right: 10px; border: 1px solid #ddd;"
/>
</figure>
</center>
## API
| 属性 | 必填 | 说明 | 类型 | 默认值 |
| ---------- | ------- | -------------------- | ---------------------------------------------- | ------ |
| customNode | `false` | 自定义出错时渲染组件 | `ReactNode` | |
| onError | `false` | 异常捕获的处理逻辑 | `(error: Error, errorInfo: ErrorInfo) => void` | |
| onRefresh | `false` | 重新刷新逻辑 | `() => void` | |