react-native
Infödda moduler
Sök…
Skapa din Native Module (IOS)
Introduktion
från http://facebook.github.io/react-native/docs/native-modules-ios.html
Ibland behöver en app åtkomst till plattforms-API, och React Native har inte en motsvarande modul än. Kanske vill du återanvända någon befintlig Objekt-C-, Swift- eller C ++ -kod utan att behöva återimplementera den i JavaScript, eller skriva lite högpresterande, multetrådad kod, t.ex. för bildbehandling, en databas eller ett antal avancerade tillägg.
En infödd modul är helt enkelt en Objekt-C-klass som implementerar RCTBridgeModule
protokollet.
Exempel
Skapa en ny fil i ditt Xcode-projekt och välj Cocoa Touch Class , välj ett namn för din klass ( t.ex. NativeModule ) i skapningsguiden , gör det till en underklass av : NSObject
och välj Objective-C
för språket.
Detta skapar två filer NativeModuleEx.h
och NativeModuleEx.m
Du måste importera RCTBridgeModule.h
till din NativeModuleEx.h
fil enligt följande:
#import <Foundation/Foundation.h>
#import "RCTBridgeModule.h"
@interface NativeModuleEx : NSObject <RCTBridgeModule>
@end
NativeModuleEx.m
till följande kod i din NativeModuleEx.m
:
#import "NativeModuleEx.h"
@implementation NativeModuleEx
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(testModule:(NSString *)string )
{
NSLog(@"The string '%@' comes from JavaScript! ", string);
}
@end
RCT_EXPORT_MODULE()
gör din modul tillgänglig i JavaScript, du kan skicka den som ett valfritt argument för att ange dess namn. Om inget namn anges kommer det att matcha klassnamnet Objekt-C.
RCT_EXPORT_METHOD()
kommer att exponera din metod för JavaScript, bara de metoder som du exporterar med detta makro kommer att vara tillgängliga i JavaScript.
Slutligen i din JavaScript kan du ringa din metod enligt följande:
import { NativeModules } from 'react-native';
var NativeModuleEx = NativeModules.NativeModuleEx;
NativeModuleEx.testModule('Some String !');