React-Native 調(diào)用Native Modules的方式

1陡叠、直接使用Native Modules 組件

  • “MyCustomModule”其實就是我們的對應(yīng)的OC工程中的類,“processString“就是類中的方法
/**
 * 調(diào)用iOS模塊1
 * http://www.cnblogs.com/daomul/
 */
'use strict';
var React = require('react-native');
var { NativeModules,View, Text,ScrollView,StyleSheet,TouchableOpacity } = React;

var Message = React.createClass({
  getInitialState() {
    return { text: 'Goodbye World.' };
  },
  componentDidMount() {
    NativeModules.MyCustomModule.processString(this.state.text, (text) => {
      this.setState({text});
    });
  },
  render: function() {
    return (
      <ScrollView style={styles.view}>
          <Text>{this.state.text}</Text>
        </ScrollView>
    );
  },
});

var styles = StyleSheet.create({
  view:{margin:20,},
});

React.AppRegistry.registerComponent('HellWorld', () => Message);
  • 所以對應(yīng)OC工程中的實現(xiàn):通過RCT_EXPORT_MODULE() 似的JS能夠放開OC中的API身隐,與之通信調(diào)用
#import <Foundation/Foundation.h>
#import "RCTBridgeModule.h"

@interface MyCustomModule : NSObject <RCTBridgeModule>

@end

#import "MyCustomModule.h"

@implementation MyCustomModule

RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(processString:(NSString *)input callback:(RCTResponseSenderBlock)callback)
{
  callback(@[[input stringByReplacingOccurrencesOfString:@"Goodbye" withString:@"Hello"]]);
}
@end

2、引入Native Modules的方式

  • 我們還可以通過引入NativeModules的方式“CalendarVIew”對應(yīng)的也是OC類名锤灿,addEventWithName是方法名
var CalendarManager = require('NativeModules').CalendarVIew;

CalendarManager.addEventWithName('something need to remmber','ShenZheng NanShan');

  • 如果參數(shù)很多我們希望通過NSDictionary來傳遞數(shù)據(jù)第股,也是可以的,OC端可以做一下Convert的處理:
CalendarManager.addEventWithName('something need to remmber',{
      location: 'ShenZhen NanShan',
      description: 'other thingslo'
});
  • 相應(yīng)的OC代碼
#import "CalendarVIew.h"
#import "RCTConvert.h"
#import "RCTLog.h"

@implementation CalendarVIew

RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(addEventWithName:(NSString *)name dic:(NSDictionary *)dic)
{
  NSString *localStr = [RCTConvert NSString:dic[@"location"]];
  NSString *descStr = [RCTConvert NSString:dic[@"description"]];
  RCTLogInfo(@"the name is %@,and the location is %@,%@",name,localStr,descStr);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吼拥,一起剝皮案震驚了整個濱河市倚聚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凿可,老刑警劉巖惑折,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枯跑,居然都是意外死亡惨驶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門敛助,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粗卜,“玉大人,你說我怎么就攤上這事纳击⌒樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵焕数,是天一觀的道長纱昧。 經(jīng)常有香客問我,道長堡赔,這世上最難降的妖魔是什么砌些? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮加匈,結(jié)果婚禮上存璃,老公的妹妹穿的比我還像新娘。我一直安慰自己雕拼,他們只是感情好纵东,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啥寇,像睡著了一般偎球。 火紅的嫁衣襯著肌膚如雪洒扎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天衰絮,我揣著相機與錄音袍冷,去河邊找鬼。 笑死猫牡,一個胖子當(dāng)著我的面吹牛胡诗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淌友,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煌恢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了震庭?” 一聲冷哼從身側(cè)響起瑰抵,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎器联,沒想到半個月后二汛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡拨拓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年习贫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片千元。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡苫昌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幸海,到底是詐尸還是另有隱情祟身,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布物独,位于F島的核電站袜硫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挡篓。R本人自食惡果不足惜婉陷,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望官研。 院中可真熱鬧秽澳,春花似錦、人聲如沸戏羽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽始花。三九已至妄讯,卻和暖如春孩锡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亥贸。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工躬窜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炕置。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓荣挨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讹俊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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