共计 1182 个字符,预计需要花费 3 分钟才能阅读完成。
1、ES6 语法不兼容 for of 语法,会产生一些不可预知的 bug。
2、从服务器获取到的配置文件 XXX.bytes,直接根据 pb 文件解析即可,千万不要进行 json 解析,否则 pb 里的枚举值就会被转成字符串,导致获取不到预想的结果。
3、做本地缓存的时候,react-native 提供的 AsyncStoreage 只能存储字符串,所以存入缓存之前数据都要进行 json 序列化,但是当从缓存中取出数据,进行 json 解析,加入缓存之前的对象的一些默认(例如:boolean 类型)值,都变成 undefined 了,会影响原有的判断逻辑,需要对数据进行逻辑判断的补充。
4、在开发中肯定会遇到需要获取时间戳的问题,React-native 中获取的时间戳是毫秒为单位,而且后面还有几位小数,打印了几条数据观察,发现都是 1 位小数,毫秒到的秒的转换,需要再除以 1000,于是就按 4 位小数进行截取,let timeStamp = timeStamp.substring(0, timeStamp.length – 4);,但是在后来的程序运行中同事发现,有的时候,后面会有没有小数的情况,结果截取到的时间戳就少了一位,结果就出错了。于是他把获取时间戳的代码修改如:let timeStamp = Math.floor(new Date().getTime() / 1000).toString();,这样获取到的就是时间戳的整数部分了,且是用秒为单位的。
5、react-native 中的 text 组件,如果不设置宽度的话,默认是父组件的宽度,显示不下才会进行换行,开发中遇到遇到两种情况:一个 image & text 采用横向布局,如果不设置 text 的宽度的话,超过父组件的宽度,右侧的文本会有丢失的情况;一个 text & image 采用横向布局,如果不设置 text 的宽度的话,text 会默认占用父组件的全部宽度,结果右侧的 image 被挤到了父组件之外。
6、数据埋点遇到的坑点:由于服务器和客户端不在同一个时区,服务器接收到打点数据,因为时间差的原因,对客户端上报的一条数据进行了多次入库,导致数据量异常。经过商量,服务器对接收到的数据进行去重,且后续时间以服务器时间为准。
7、AsyncStoreage 的数据存储速度有待怀疑。在性能调优的时候发现,一些方法的执行,快的是 1 毫秒,大部分的发放执行在 40 毫秒左右,到了账号信息存储的时候,就执行了一个 AsyncStorage.multiSet 方法,其中是 5 条数据,耗时一下就变成了 800 毫秒左右。截图如下:
上面这个方法的执行耗时是 783 毫秒,所以对于这里的信息存储,还是有很大的提升空间的。AsyncStoreage 给我们在开发中提供了一些数据存储的便利,但是只适合于存储少量数据,且对耗时感知不是很强的场景,对于登录和注册这种关键性步骤,AsyncStoreage 的性能还有有欠缺的。