为什么我想用原生UITabBarController加RN来开发APP呢?
1.考虑到以后可能会涉及到IM功能,目前对于创业公司来说,IM大多使用第三方IM平台开发,许多第三方框架都会有直接UI集成,所以这里用原生tabbar做一个控制跳转.(当然RN也可以封装原生的View)
2.对于性能要求比较大,图片比较多的界面,比如朋友圈界面等,个人觉得使用原生要更加有效率一些.因为RN中Image组件没有做图片缓存,没有我们习惯的站位图,还是使用SDWebImage更加开心一点.
3.对于初入RN的童鞋们,怕被入坑后无法自拔,那就使用我这套解决方案吧,让你快速入坑快速出坑
为什么我们要使用嵌套UINavigationContrller?
因为我们从RN跳原生这样啦
这里是牛逼的分割线,进入正题
1.首先我们先初始化一个RN项目
2.根据你有几个模块创建几个入口文件(index.ios.js)如图:
我这里就是直接复制粘贴
3.配置pod(如果不想使用pod可以忽略)
4.下面开始在项目中添加storyboard(喜欢用纯代码的也可以使用纯代码)
4.1.创建好storyboard我们要注意入口文件的修改,选中你的入口控制器
4.2.配置项目的Main Interface,选择刚刚创建的storyboard
4.3.AppDelegate的didFinishLaunchingWithOptions方法中return YES;
5.设置不同模块的不同的RN入口js
5.1调用RN代码
5.2注册RCTBridgeDelegate,并且调用sourceURLForBridge方法
以此类推,设置完其他的RN模块之后,我们便可跑起来我们的项目
*其他东西:
RN与原生的交互与相互传参
请查看我的上篇文章,讲解了最基本的交互,现在讲的是带返回参数的方法
1.JS中写法
2.IOS原生中写法
2.1保存block
2.2使用block
注:会node.js的小伙伴应该很容易看懂这段代码。我看了其他第三方框架的RN代码,好像ios通知也可以做原生与RN的交互,大家有兴趣可以去研究研究。