1、使用redux、react-redux、redux-thunk做全局状态管理
- redux三大原则
单一数据源:整个应用的state被存储在一个对象数中,并且这个对象数只存在于唯一的store中。
State是只读的:唯一改变state的方法是出发action,action是一个描述已发生事件的普通对象。
使用纯函数来执行修改:编写reducer来描述action如何改变state。 - 使用redux-thunk来dispatch异步action
- middleware的作用是在action于reducer之间执行副作用函数,如日志打印(redux-logger),异步函数(redux-thunk),他的优点在于能够链式的插入多个中间件。
2、使用react-native-fast-image作为应用图片加载引擎
- react-native-fast-image使用的原生库位SDWebImage(iOS端)、Glide(Android端)。
- react-native-fast-image能够很好地控制图片缓存。
- react-native-fast-image支持gif动画。
- react-native-fast-image支持预加载。
- glide会自动裁剪图片、缓存图片、生命周期控制。能有效图片列表所需内存。
3、使用context做全局的一些配置更改,如偏好城市,主题样式
- 具体参见Context
4、使用react-native-vector-icons作为图标库
- 矢量图标能够在不同分辨率的手机上展示一致的效果。
- 减少包体积。
- 占用内存小。
- 能够为图标配置不同的主题颜色。
5、使用axios替代fetch作为网络请求库
- axios支持并发请求,fetch需要Promise.all()实现并发。
- axios支持timeout,fetch需要自己实现超时。
- axios支持拦截器(请求拦截,响应拦截), fetch不支持。
- axios支持全局配置。
- axios支持请求取消。