今天中午测试的时候,发现一个问题。
一个ReactNative的App,跑在iPhone5s上,输入用户名、密码,程序崩溃,提示“ Invalid data message - all must be length: 8 ”。
但问题在于,在别人的手机上跑,以及在模拟器上跑,都没有问题,让我一度怀疑手里的iPhone5s是不是坏了。。。
找了一中午原因都没找到,最后求助大腿鑫,大腿鑫通过注掉代码,一遍一遍的尝试下,终于发现问题出在Alert上。
先来贴那段有问题的Alert,原先是这么写的:
Alert.alert("提示", error, [{
text: '确定', onPress: () => {}
}])
然后我们把它换成这样试了一下,发现它不崩了:
alert(error)
然后问题就来了,它弹出一个提示,"Network request failed",然后我们定睛一看,原来是手机的wifi和流量都关了,坑爹啊!!!
再把wifi打开,发现它好使了。
我们回过头来再说那个Alert的问题,它崩溃是因为抛出的error是一个object,不是一个单纯的字符串。
所以归根结底,还是代码有问题。然后我们把它改成这样:
Alert.alert("提示", error+'', [{
text: '确定', onPress: () => {}
}])
就是在原先的基础上+' ',转换成字符串,就OK了。( 作为从iOS转过来的菜鸟吐槽一句,这转换字符串的语句真够精炼的!)
然后我们觉得如果每个地方都这么改,要费很多时间,然后大腿鑫就在底层封装的方法里,把这个方法给改了,然后问题就圆满解决了!!