仿《ONE》APP又来了!
又写了一个《ONE》,别急呀,我可没copy上次写的代码~
这是用ReactNative写的《ONE》
基本界面都已经实现,当然了,有些地方图省事(搞不定) + 追求速度写的Demo,就自然会导致:
- 退而求其次的实现方式
- 代码结构可能不太规范/清晰
- 可能还有bug呢(我不听我不听)
项目地址 => https://github.com/liuzho/ONE-RN
我的个人主页 => https://liuzho.com
尽管Kotlin风光无限几乎对各大社区进行了屠版,但我还是冒着被淹没的风险把这个Demo发出来了,万一有人看呢(逃..
没事,ReactNative自有魅力!(各种技能全给你学了管你谁有魅力).....
这个Demo对你有没有帮助?
如果你初学RN,那么帮助可能有限,请你点个赞/点个star,以备后续学习
如果你是RN大牛,那么请你点个赞/点个star,慢慢看,慢慢嘲讽我
如果你有一丢丢RN基础,想练练手,那么请你点个赞/点个star,反正你也学不到啥略略略~~~
预览
当然了,国际惯例,甩预览图:
在你的电脑上运行
你需要这样做:
git clone https://github.com/liuzho/ONE-RN.git
cd ONE-RN
npm install//切记不要用cnpm!亲测cnpm导致无法运行
react-native run-ios
orreact-native run-android
理论上iOS(测试可用,部分组件如ToastAndroid不通用报黄)和Android都可以运行
项目情况
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-navigation": "^1.0.0-beta.9"
-
StackNavigator / TabNavigator的使用
你能看到的:底部Tab(TabNavigator)、第一个Tab内类似viewPager滑动(TabNavigator)、跳转到用户/搜索等界面(StackNavigator)
为什么不用ViewPagerAndroid来实现第一个Tab内的滑动呢,因为这个组件在iOS不能用啊...GitHub应该有通用组件,我没有去找,用TabNavgation算了吧
-
组件信息传递props / nav的router携带数据params这些
抽取了一个Toolbar组件,title的显示通过props/router搞定,StackNavigator的router(项目内appNavigation)通过props疯狂传递给各个界面/组件
-
通用控件的抽取
Toolbar、CdView等一些组件的抽取(我没有刻意去做这件事,可能有些应该抽取的控件我并没有很好的抽取出来)
-
动画Animated
我承认其实就一个假循环旋转动画....CdView点击按钮旋转,以前总结过Animated知识点现在全忘了...
-
WebView加载网页并插入JS代码
Detail页面的内容,由于想快点完成Demo,也觉得界面写也就是一样的,就没自己实现,直接用了WebView加载相应的WebApp页面,然后通过
webView.injectJavaScript
插入我的JS代码,将内容中头部和底部一些不需要的地方全部通过Element.reoveChild
给移除掉了 -
ListView、fetch使用
关于ListView、fetch的使用我有写过一篇文章:ReactNative网络fetch数据并展示在listview中
那么为什么我没有在这个基础上实现下拉刷新、上拉加载、headerView、footerView呢?因为有一个FlatList完全支持这些做法!那又为什么我没有用FlatList呢?!因为在我发现FlatList的时候为时已晚,我已经不想再修改之前写了的代码了....FlatList中文文档
还有其他一些我一时也想不起来,你觉得都用到了啥?T_T求不打
-
感谢API哥们儿?这次你还冒出来不?
API:戳这里=>ONE的API
注:若侵犯《ONE》权利,我将及时删除所有相关内容
我将保持更新/优化一段时间,毕竟还有一些细节没完成,还有挺多需要优化的地方