Zoeken…


Maak uw native module (IOS)

Invoering

van http://facebook.github.io/react-native/docs/native-modules-ios.html

Soms heeft een app toegang nodig tot platform-API en heeft React Native nog geen overeenkomstige module. Misschien wilt u een aantal bestaande Objective-C-, Swift- of C ++ -code hergebruiken zonder deze opnieuw te moeten implementeren in JavaScript, of een aantal krachtige, multi-threaded code schrijven zoals voor beeldverwerking, een database of een aantal geavanceerde extensies.

Een native module is gewoon een Objective-C-klasse die het RCTBridgeModule protocol implementeert.


Voorbeeld

Maak in uw Xcode-project een nieuw bestand en selecteer Cocoa Touch Class , kies in de aanmaakwizard een naam voor uw klasse ( bijv. NativeModule ), maak er een subklasse van : NSObject en kies Objective-C voor de taal.

Hiermee worden twee bestanden NativeModuleEx.h en NativeModuleEx.m

U moet importeren RCTBridgeModule.h om uw NativeModuleEx.h bestand als volgt:

#import <Foundation/Foundation.h>
#import "RCTBridgeModule.h"

@interface NativeModuleEx : NSObject <RCTBridgeModule>

@end

Voeg in uw NativeModuleEx.m de volgende code toe:

#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() maakt uw module toegankelijk in JavaScript, u kunt een optioneel argument doorgeven om de naam ervan op te geven. Als er geen naam wordt opgegeven, komt deze overeen met de naam van de Objective-C-klasse.

RCT_EXPORT_METHOD() stelt uw methode bloot aan JavaScript, alleen de methoden die u exporteert met deze macro zijn toegankelijk in JavaScript.

Ten slotte kunt u in uw JavaScript uw methode als volgt aanroepen:

import { NativeModules } from 'react-native';

var NativeModuleEx = NativeModules.NativeModuleEx;

NativeModuleEx.testModule('Some String !');


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow