目的
在开发react native项目中,或多或少会遇到一些奇怪问题,有些可能在网络上页无法找到答案。特此记录,以便后来人少走一些坑。
IOS 的bug
一:Deployment Target设置未生效
- bug:在项目的Target中Deployment Info设置的最低OS version为10.0,但是打包上传到Testflight上,最低支持变为IOS11.0。
- 原因:不知道什么原因导致Xcode12.5不支持IOS9.3和IOS10.3,但是项目中依赖库设置的Deployment Target有些为9.3,有些设置10.3,这样就导致苹果系统不支持这些系统版本,从而选择当下的默认版本11.0。
- 解决方案:修改每个库中的Deployment Target,使其为Xcode支持的版本;(个人感觉这个方案不太友好,但是由于时间紧,目前只能先这样解决了。谁有更好的方案,请在评论区提出,感谢!)
Android的bug
一:在新版手机上(API level 29)无法使用绝对路径获取到图片
- 解决方案:在AndroidManefest.xml文件中的application中设置android:requestLegacyExternalStorage=“true”。
二:华为P40通过媒体库获取到的部分音频文件绝对路径,无法通过js端进行文件传输。
解决方案:使用react native fs进行文件传输。或者使用react native本身依赖的Okhttp3进行文件传输。
React端的bug
一:this.setState无法刷新UI
- bug:在function方法中调用this.setState,但是界面却无法刷新
- 原因:因为function未使用bind方法绑定Component,导致方法中的this不是Component对象,而是方法本身,所以无法刷新。
- 解决方案:使用箭头函数() => {},来代替function;或者使用bind (this),将this传递到function里。
|