React Native 混合开发多入口加载方式详解


Posted in Javascript onSeptember 23, 2019

在已有app混合开发时,可能会有多个rn界面入口的需求,这个时候我们可以使用RCTRootView中的moduleName或initialProperties来实现加载包中的不同页面。

目前使用RCTRootView有两种方式:

  • 使用initialProperties传入props属性,在React中读取属性,通过逻辑来渲染不同的Component
  • 配置moduleName,然后AppRegistry.registerComponent注册同名的页面入口

这里贴出使用0.60.5版本中ios项目的代码片段:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
 RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
            moduleName:@"AwesomeProject"
            initialProperties: @{
              @"screenProps" : @{
                @"initialRouteName" : @"Home",
                },
              }];

 rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 UIViewController *rootViewController = [UIViewController new];
 rootViewController.view = rootView;
 self.window.rootViewController = rootViewController;
 [self.window makeKeyAndVisible];
 return YES;
}

initialProperties

这种方式简单使用可以通过state判断切换界面,不过项目使用中还是需要react-navigation这样的导航组件搭配使用,下面贴出的代码就是结合路由的实现方案。

screenProps是react-navigation中专门用于传递给React组件数据的属性,createAppContainer创建的组件接受该参数screenProps,并传给访问的路由页面。

class App extends React.Component {
  render() {
    const { screenProps } = this.props;

    const stack = createStackNavigator({
      Home: {
        screen: HomeScreen,
      },
      Chat: {
        screen: ChatScreen,
      },
    }, {
      initialRouteName: screenProps.initialRouteName || 'Home',
    });

    const AppContainer = createAppContainer(stack);

    return (
      <AppContainer
        screenProps
      />
    );
  }
}

moduleName

我们按照下面代码注册多个页面入口之后,就可以在原生代码中指定moduleName等于AwesomeProject或者AwesomeProject2来加载不同页面。

AppRegistry.registerComponent("AwesomeProject", () => App);
AppRegistry.registerComponent("AwesomeProject2", () => App2);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 格式化时间日期函数小结
Mar 20 Javascript
js检测输入内容全为空格的方法
May 03 Javascript
JavaScript检查某个function是否是原生代码的方法
Aug 20 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
Apr 15 Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 Javascript
JS中的作用域链
Mar 01 Javascript
vuejs 制作背景淡入淡出切换动画的实例
Sep 01 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
JS中循环遍历数组的四种方式总结
Jan 23 Javascript
javascript实现简单页面倒计时
Mar 02 Javascript
教你一步步实现一个简易promise
Nov 02 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
Sep 23 #Javascript
node 文件上传接口的转发的实现
Sep 23 #Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 #Javascript
Electron 调用命令行(cmd)
Sep 23 #Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 #Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 #Javascript
小程序实现上下移动切换位置
Sep 23 #Javascript
You might like
phpinfo 系统查看参数函数代码
2009/06/05 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
JS常用知识点整理
2017/01/21 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
React Native之TextInput组件解析示例
2017/08/22 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
Python实现身份证号码解析
2015/09/01 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python使用pymysql小技巧
2017/06/04 Python
Django视图和URL配置详解
2018/01/31 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python可迭代对象去重实例
2020/05/15 Python
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
什么是类的返射机制
2016/02/06 面试题
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
初中英语教学反思
2014/01/25 职场文书
优秀交警事迹材料
2014/01/26 职场文书
挂职自我鉴定
2014/02/26 职场文书
探亲假请假条
2014/04/11 职场文书
庆元旦活动总结
2014/07/09 职场文书
三潭印月的导游词
2015/02/12 职场文书
财务稽核岗位职责
2015/04/13 职场文书
党章学习心得体会2016
2016/01/14 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
创业计划书之家教中心
2019/09/25 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书