iOS項(xiàng)目集成react native就這幾步

沒事寫個(gè)記錄, 也算是溫故而知新吧. 如下效果:

react-native-cli和npm安裝不在本文范圍.以下react native簡稱RN.

現(xiàn)在RN也越來越方便了,集成進(jìn)原生項(xiàng)目也非常簡單.就這下面幾個(gè)步驟.

我們有一個(gè)iOS原生項(xiàng)目叫 Helloworld, 是使用Cocoapods做包管理, RN也是Cocoapods接入. 目錄結(jié)構(gòu)如下:

[圖片上傳失敗...(image-145ea0-1516158368187)]

1.創(chuàng)建RN

  1. 在項(xiàng)目目錄下創(chuàng)建reactnative文件夾, 在這個(gè)文件夾里創(chuàng)建兩個(gè)文件index.ios.jspackage.json;

  2. package.json添加以下內(nèi)容

    {
        "name": "Helloworld",
        "version": "0.0.1",
        "private": true,
        "scripts": {
          "start": "node node_modules/react-native/local-cli/cli.js start"
        },
        "dependencies": {
            "react": "15.3.1",
            "react-native": "^0.33.0"
        },
        "devDependencies": {
          "babel-plugin-transform-decorators-legacy": "^1.3.4"
        }
    }
    
    
  3. index.ios.js添加以下內(nèi)容

    import React, { Component } from 'react';
    
    import {
      AppRegistry,
      StyleSheet,
      Text,
      View,
    } from 'react-native';
    
    class Main extends Component {
      render() {
        return (
          <View style={{backgroundColor:'yellow', flex:1, alignItems:'center', justifyContent:'center'}}>
            <Text>Hello World</Text>
          </View>
        );
      }
    }
    
    AppRegistry.registerComponent('Helloworld', () => Main);
    
  4. reactnative文件夾下用終端命令: npm install

2.接RN入項(xiàng)目

  1. 打開項(xiàng)目中的Podfile文件, 添加以下內(nèi)容:

    pod 'React', :path => './reactnative/node_modules/react-native', :subspecs => [
            'Core',
             'ART',
             'RCTActionSheet',
             'RCTAdSupport',
             'RCTGeolocation',
             'RCTImage',
             'RCTNetwork',
             'RCTPushNotification',
             'RCTSettings',
             'RCTText',
             'RCTVibration',
             'RCTWebSocket',
             'RCTLinkingIOS',
             # Add any other subspecs you want to use in your project
           ]
    

    注意 path =>后面的路徑是否正確.

  2. 在項(xiàng)目下執(zhí)行命令: pod install

  3. RN是以view的形式在項(xiàng)目中使用的, 所以再項(xiàng)目中新建一個(gè)控制器RNMainViewControllerRNView

    RNMainViewController.m

    #import "RNMainViewController.h"
    #import "ViewController.h"
    #import "RNView.h"
    
    @interface RNMainViewController ()
    
    @end
    
    @implementation RNMainViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        self.title = @"RN模塊首頁";
        
        RNView * rnView = [[RNView alloc] initWithFrame:self.view.bounds];
        self.view = rnView;
    }
    
    @end
    

    RNView.m

    #import "RNView.h"
    #import "RCTBundleURLProvider.h"
    #import "RCTRootView.h"
    
    @implementation RNView
    
    - (instancetype)initWithFrame:(CGRect)frame {
        
        if (self = [super initWithFrame:frame]) {
    #if TARGET_IPHONE_SIMULATOR
            [[RCTBundleURLProvider sharedSettings] setJsLocation:@"localhost"];
    #else
            [[RCTBundleURLProvider sharedSettings] setDefaults];
    #endif
            NSURL *jsCodeLocation;
            jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
            
            RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                                moduleName:@"Helloworld"
                                                         initialProperties:nil
                                                             launchOptions:nil];
            
            [self addSubview:rootView];
            rootView.frame = self.bounds;
        }
        return self;
    }
    
    @end
    
  4. 在項(xiàng)目info.plist加上 App Transport Security Settings:

  5. Build Phases中添加一個(gè)Run Script, 注意其中的路徑正確:

    [圖片上傳失敗...(image-755f88-1516158368187)]

  6. reactnative文件夾下用終端命令: npm start

  7. 運(yùn)行項(xiàng)目,不出意外就大功告成了.

項(xiàng)目代碼 github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耕肩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捍岳,更是在濱河造成了極大的恐慌植榕,老刑警劉巖驾凶,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠龙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡落午,警方通過查閱死者的電腦和手機(jī)析显,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門鲫咽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叫榕,你說我怎么就攤上這事浑侥。” “怎么了晰绎?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵寓落,是天一觀的道長。 經(jīng)常有香客問我荞下,道長伶选,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任尖昏,我火速辦了婚禮仰税,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抽诉。我一直安慰自己陨簇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布迹淌。 她就那樣靜靜地躺著河绽,像睡著了一般己单。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耙饰,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天纹笼,我揣著相機(jī)與錄音,去河邊找鬼苟跪。 笑死廷痘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的件已。 我是一名探鬼主播笋额,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拨齐!你這毒婦竟也來了鳞陨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤瞻惋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后援岩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歼狼,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年享怀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羽峰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡添瓷,死狀恐怖梅屉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳞贷,我是刑警寧澤坯汤,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站搀愧,受9級(jí)特大地震影響惰聂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咱筛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一搓幌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迅箩,春花似錦溉愁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罢缸。三九已至,卻和暖如春投队,著一層夾襖步出監(jiān)牢的瞬間枫疆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工敷鸦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留息楔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓扒披,卻偏偏與公主長得像值依,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碟案,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容