在《Mac系统下React Native环境搭建》配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用它,只是有时安装库很慢,还不如复制粘贴库来的快,就删除它了,这里就使用手动集成的方式吧。

  1. 新增React Native文件路径和json说明文件,进入项目根目录(*.xcodeproj文件所在目录):

    mkdir reactnative

    cd reactnative

    vim package.json  : 用于初始化react native

    文件内容为:

{
"name": "<项目名称>",
"version": "3.0.1612090",
"private": true,
"dependencies": {
"react": "^0.14.8",
"react-native": "^0.22.2"
}
}

    执行"npm install",会在当前目录(reactnative)生成node_modules子目录,里面包含react-native包含的所有包:

    

    npm install完成:

    

  2. 在reactnative目录下新增index.ios.js文件:

    

  3. 添加React Native依赖包(添加自己需要用的包就可以了):

    1. 添加"React.xcodeproj"项目到现有项目:

      

    2. 添加"RCTNetwork.xcodeproj":

      

    3. 添加"RCTText.xcodeproj":

      

    4. 添加"RCTWebSocket.xcodeproj":

      

    5. 添加"RCTActionSheet.xcodeproj":

      

    添加完后项目结构如下:

    

  4. 添加frameworks:

    

  5. 添加搜索的头文件地址:

    在Header Search Paths增加一行:

    

    增加后如下:

    

  6. 运行,报如下错误:

     在方法前加"(void)"即可,如下:

    还有一个属性访问错误,很简单,修改即可。再次编译,可以了。

  7. 测试react native功能:

    1. 增加View,用来显示react native的文件内容:

      

    2. 实现ReactViewTest.m :

      

    3. 自定义view完成了,编写控制器将其展现出来:

      

  8. 测试运行

    先启动react-native服务端:

    在reactnative目录下执行:"react-native start"

    

    在项目的info.plist增加配置:

    

    这里使用的是真机调试,因此,需要修改localhost为ip地址,且电脑和手机需要连接在同一个网络。

    运行:

    结果如下:

    

    服务端输出如下:

    

    可以看到,每次修改js文件,都是动态更新页面传输到手机上,刷新重新显示即可。

  9. 发布时:

    开发时从服务端获取渲染文件,发布时,就需要将文件打包为main.jsbundle了:

    使用命令”curl http://192.168.1.102:8081/index.ios.bundle -o main.jsbundle“

    

    在项目添加这个文件,修改ReactViewTest:

    

    为了测试效果,关闭react native服务端,运行APP,可以正确从本地加载显示,完成了。

    后面就可以按需继续使用js和原生来混合开发了。

现有iOS项目集成React Native过程记录的更多相关文章

  1. iOS原生项目集成React Native模块

    今天周末,弄弄Native和React Native之间的交互.首先,先在iOS原生项目中集成React Native模块: 注意事项: 1.因为react native的版本问题,部分细节可能有所不 ...

  2. iOS原生项目中集成React Native

    1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...

  3. react native 之 在现有的iOS工程中集成react native

    在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...

  4. iOS 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  5. 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  6. 一个资深iOS开发者对于React Native的看法

    一个资深iOS开发者对于React Native的看法 当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道.   我认为一个js开发者可以使用javasc ...

  7. [转] 一个资深iOS开发者对于React Native的看法

    当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很 ...

  8. Android 工程集成React Native 0.44 注意点

    当前(2017年5月22日 )React Native开发相当火爆,但是搜索下来,没有最新版本0.44集成的教程,因此尝试了一下如何集成到Android原生工程中去.本篇旨在记录出现的问题以及应对方式 ...

  9. 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

随机推荐

  1. NOIp2016 游记

    DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...

  2. 脚手架搭建的vue项目里引入jquery和bootstrap

    引入jquery: 1.在cmd输入:npm install jquery,回车,等待.. 2.在webpack.base.conf.js里进行如下操作: 3.在webpack.prod.conf.j ...

  3. 使用sublime一键格式化XML文件

    1 sublime简介 sublime是一款代码编辑和阅读软件,体积小,运行快,界面非常简洁漂亮.官方地址:https://www.sublimetext.com/ 2 在sublime上安装插件 使 ...

  4. Bubble Cup 8 finals G. Run for beer (575G)

    题意: 给定一个带权无向图,每条边的代价为边权/当前速度,每次到达一个新节点,速度都会除以10. 求0号点到n-1号点的最小代价,如果多解输出点数最少的解,输出代价.路径点数.路径经过的点. 1< ...

  5. C语言基础(9)-字符串格式化输入和输出

    1.字符串在计算机内部的存储方式 字符串是内存中一段连续的char空间,以’\0’结尾 2.printf函数,putchar函数 putchar输出一个char printf是输出一个字符串 prin ...

  6. sqlserver事务加锁机制

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...

  7. iOS小知识:计算字符串长度(如果有表情,表情的长度为1)

    在做项目的时候,textField能够输入表情,但是iOS的表情是占两个字符的,再计算字符串长度的时候就和想象的不一样了,所以用了次方法会将表情的长度转成1,最后得到的字符串的长度就是能看到的实际的长 ...

  8. fzf by ruby

    fzf by ruby */--> fzf by ruby 1 github地址 https://github.com/junegunn/fzf 2 简介 软件通过匿名管道和grep扩展了bas ...

  9. git仓库的初始化

    关于git仓库的初始化和git push的操作 git init git remote add origin ssh://myserver.com/home/git/myapp.git git pul ...

  10. Interleaving String

    https://leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 is formed by th ...