按惯例先放下载地址:牛读 v2.0.0 http://reader.liteneo.com/ 同时支持 iOS 以及 Android,欢迎品尝
之前一直想着跟着 React Native 的 Release 节奏,每一两个月发一个版本,但是这次却等了四个多月,一方面是要等某些我想要的特性被支持,一些严重的八阿哥被修复,另外一个原因就是这次更新我几乎重写了绝大部分代码逻辑
从用户的角度看,这次更新几乎没有大的更新,只有几处 UI 的更新,比如知乎日报详情页的视差效果以及集成了微信分享,但是对我来讲,这是一次脱胎换骨的更新
dva, 之前的版本没有使用任何 redux、mobx 之类的状态管理工具,因为我觉得整个 App 的逻辑并不复杂,但是事实并非如此,里面各种 ref
的使用使整个流程变得异常复杂,后来经过在 redux 和 mobx 中间纠结,最后选择了抱 redux 大腿,用过 redux 的应该都知道 redux 相对繁琐的写法,所以我选择了 dva
,一个封装了 redux + redux-saga 的状态管理库,然后就开始了漫长的重构之旅,dva
的体验非常棒,简化了 redux 的写法,以及与 rudx-saga 的集成,现在我将绝大部分逻辑从组件里移到了model
里,整个流程清晰多了
react-navigation, 在重构的过程中,RN 先是移除了 NavigationExperimental
,接着 depreciated 了一直以来的官方推荐的导航组件Navigator
, 转而推荐使用react-navigation
,牛读最开始也是用的Navigator
,后来因为NavigationExperimental
支持原生驱动动画,性能好太多,就切到了NavigationExperimental
,这个过程基本无痛,现在为了为以后做准备,于是切换到react-navigation
,这真的是件很痛苦的事,一方面是使用方式完全不一样,但最主要的原因是这个库本身问题太多,在重构的过程中,我一直都在反馈问题,提交 PR,终于把他打磨的满足我的需求了(但是对于其他一些场景,他依然还有很多问题没有解决),现在牛读里所有的转场动画都是用 react-navigation 实现的,包括设置界面的旋转
我把 dva + react-navigation 的使用提炼了一个 react-native-dva-starter,我会持续把我认为的 dva 和 react-navigation 在 React Native 中的最佳实践加进去,有兴趣的可以关注下
主要是我手上没有安卓手机,没办法测试,再就是精力实在有限,因为完全是利用业余时间开发,这次重写耗费了我太多时间,但是我还是花费了很多时间去适配安卓版本,就是想证明 React Native 也可以做出体验很好的安卓应用,目前除了因为阿婆的专利问题 Android 的 ScrollView 不支持 overScroll,其他的效果跟 iOS 上完全一致
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.