onpress写逻辑 react_RN-逻辑崩溃处理:react-native-exception-handler

本文介绍了如何在React Native中使用'react-native-exception-handler'库来处理JavaScript和原生模块的异常。通过设置JSExceptionHandler和NativeExceptionHandler,可以捕获并显示错误信息,防止应用崩溃。此外,还展示了高阶组件HocErrorCatch的使用,以及与componentDidCatch配合防止页面和逻辑崩溃的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import React, {PureComponent} from 'react';

import {

DeviceEventEmitter,

TouchableOpacity,

View,

Text,

Alert

} from 'react-native'

import Render from './render'

import PropsType from 'prop-types'

import styles from "./styles";

import HocErrorCatch from './HocErrorCatch'

import {setJSExceptionHandler, setNativeExceptionHandler} from 'react-native-exception-handler'

/**

* JS_Exceptions:你的Javascript代码产生的错误

*

* 第一个参数,错误发生时调用的函数

* 第二个参数,设置true,在开发模式下调用处理程序代替 red 屏幕

*

* error 错误信息

* isFatal 是否是致命的,一定发生崩溃的

*/

setJSExceptionHandler((error, isFatal)=>{

// 您可以捕获这些未处理的异常并执行诸如显示警报或弹出窗口之类的任务,执行清理甚至点击API以在关闭应用程序之前通知开发团队。

Alert.alert(error.name,error.message,[{text: 'OK'}])

}, true)

//

//

//

//

// /*

// * Native_Exceptions:Native Modules产生的错误。仅在正式环境下调用

// *

// * 第一个参数,错误发生时调用的函数

// * 第二个参数,android下使用,用于在程序发成错误时,是否自动关闭程序

// * 第三个参数,设置true,确保定义的其他异常处理可以及时的调用

// *

// * errorString 错误信息

// * */

//

// setNativeExceptionHandler((errorString)=>{

// //自定义全局错误处理程序、崩溃日志

//

// //注意:通过JS警告或显示任何UI更改,在NATIVE ERRORS的情况下不会触发

// },false, true)

//

/*

* 高阶组件方式使用

* */

@HocErrorCatch

export default class RNTestPage extends React.Component {

constructor(props) {

super(props);

this.state = {

count: 0

}

this.onPress = this.onPress.bind(this);

}

onPress(){

let newCount = this.state.count + 1

this.setState({

count: newCount

},()=>{

if (this.state.count == 5){

throw new Error('i crashed!!!')

}

})

}

render() {

// let a = [1,2,3]

// let value = a[3].toString()

return (

点击我,第5次就崩溃啦

{

// 找不到方法

this.abc()

// 对于 undefined 进行操作

// let a = [1,2,3]

// let value = a[3].toString()

}}>

点击我,直接崩溃

正常页面显示

)

}

}

和 componentDidCatch 配合使用,页面崩溃处理 + 逻辑崩溃处理,防止大部分的崩溃~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值