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代码示例
Feb 15 Javascript
Firefox div高度自适应
Apr 28 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
Aug 30 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
Node.js+Express配置入门教程详解
May 19 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
Jul 01 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php绘制一个矩形的方法
2015/01/24 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
javascript 函数调用规则
2009/08/26 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
JavaScript中this详解
2015/09/01 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Python paramiko模块的使用示例
2018/04/11 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python 阶乘累加和的实例
2019/02/01 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python包和模块的分发详细介绍
2020/06/19 Python
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
幼儿园安全责任书范本
2014/07/24 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
2014年质检员工作总结
2014/11/18 职场文书
大学生党性分析材料
2014/12/19 职场文书
街道社区活动报告
2015/02/05 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
Nginx配置之禁止指定IP访问
2022/05/02 Servers