iOS原生项目中集成React Native
来源:互联网 发布:水浒传反映了什么知乎 编辑:程序博客网 时间:2024/06/04 20:01
1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境。
2.使用Xcode新建一个工程。EmbedRNMeituan
[图1]
3.使用CocoaPods安装React Native
在工程目录下新建Podfile文件,并配置需要使用的第三方库
pod 'React', '0.13.0-rc'pod "React/RCTText"pod "React/RCTActionSheet"pod "React/RCTGeolocation"pod "React/RCTImage"pod "React/RCTLinkingIOS"pod "React/RCTNetwork"pod "React/RCTSettings"pod "React/RCTVibration"pod "React/RCTWebSocket"platform :ios, '7.0'
注:如果你需要在React Native中使用<Text>,就需要添加 pod"React/RCTText”,否则不能用
然后安装: pod install
这一步会比较慢
安装完成后,添加 Search Paths
输入$(PODS_ROOT),选择recursive
【图2】
编译一下,会报一个错,提示路径太长
Argument list too long: recursive header expansion failed at /Users/***/EmbedRNMeituan/Pods/React/node_modules/jest-cli/node_modules/istanbul/node_modules/escodegen/node_modules/estraverse.
这里需要修改刚才的设置,将 $(PODS_ROOT) 改成 $(PODS_ROOT)/React/React
再次编译,成功。
4.在工程目录下新建Components文件夹,和index.ios.js文件
【图3】
并在index.ios.js文件里粘贴一下代码:
'use strict';var React = require('react-native');var { AppRegistry, StyleSheet, Text, View,} = React;var EmbedRNMeituan = React.createClass({ render: function() { return ( <View style={styles.container}> <Text style={styles.welcome}> Welcome to React Native! </Text> <Text style={styles.instructions}> To get started, edit index.android.js </Text> <Text style={styles.instructions}> Shake or press menu button for dev menu </Text> </View> ); }});var styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, },});AppRegistry.registerComponent('EmbedRNMeituan', () => EmbedRNMeituan);
以上,React Native部分已经弄完。下面开始原生部分。
5.新建显示React Native的UIView。
用来加载显示React Native的容器是 RCTRootView,它是继承自UIView。
在ViewController.m中
#import "RCTRootView.h"- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self initRNView];}-(void)initRNView { NSURL *jsCodeLocation; jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"EmbedRNMeituan" initialProperties:nil launchOptions:nil];//注意,这里是 @"EmbedRNMeituan" rootView.frame = CGRectMake(0, 64, 300, 300); [self.view addSubview:rootView];}
6.运行
此时如果运行的话,会出现下面的情况
【图4】
提示找不到服务器,以及数据传输的安全问题。
6.1允许http请求
打开info.plist文件,添加
【图5】
App Transport Security Settings -》 Dictionary
Allow Arbitrary Loads -》 YES
6.2启动服务器
工程目录下,终端输入:
(cd Pods/React; npm run start)
vi run.sh
输入
#! /bin/bash(cd Pods/React; npm run start)
然后给run.sh添加可执行权限:chmod +x run.sh
之后开启服务器时,只需要在终端输入命令: ./run.sh
3 1
- iOS原生项目中集成React Native
- iOS原生项目中集成React Native
- iOS原生项目中集成React Native
- iOS原生项目中集成React Native
- IOS-React Native 使用CocoaPods集成到原生项目中
- React Native集成到原生项目(IOS)
- React Native 集成到原生项目(iOS)
- React Native 集成到原生项目(iOS)
- React Native集成到IOS原生项目
- 最新iOS原生项目集成React-Native
- ios原生集成React Native
- ios原生项目集成react-native过程记录
- IOS与React Native混编,将RN框架使用CocoaPods集成到原生项目中
- 原生Android项目中集成React native页面
- Android之原生项目集成React Native
- React Native集成到原生项目示例
- Android原生项目集成React Native
- Android原生项目集成React Native
- 一个适合程序员的字体source code pro
- 牛逼的密码破解网站
- 算法 —— 实用程序片段
- ios开发笔记--判断输入的手机号和价格是否合法
- android studio之如何删除项目中的依赖项目或者module
- iOS原生项目中集成React Native
- linux重启oracle 各种方法
- iOS开发笔记--调用打开AppStore显示自己的App
- 前出塞mysql中update的low_priority解决并发问题
- AllJoyn开源技术基础概念解析
- UIImageView详解
- iOS开发笔记--检查App更新
- Java 入门 之 集合 Collection
- CodeBlocks运行在Linux Gnome下启用系统终端取代xterm