Recherche…


Créez votre module natif (IOS)

introduction

à partir de http://facebook.github.io/react-native/docs/native-modules-ios.html

Parfois, une application a besoin d'accéder à l'API de la plate-forme et React Native n'a pas encore de module correspondant. Vous souhaitez peut-être réutiliser un code Objective-C, Swift ou C ++ existant sans avoir à le réimplémenter en JavaScript ou écrire du code multi-thread performant, tel que traitement d'image, base de données ou nombre d'extensions avancées.

Un module natif est simplement une classe Objective-C qui implémente le protocole RCTBridgeModule .


Exemple

Dans votre projet Xcode, créez un nouveau fichier et sélectionnez Cocoa Touch Class . Dans l'assistant de création, choisissez un nom pour votre classe ( par exemple, NativeModule ), faites-en une sous - classe de NSObject et choisissez Objective-C .

Cela créera deux fichiers NativeModuleEx.h et NativeModuleEx.m

Vous devrez importer RCTBridgeModule.h dans votre fichier NativeModuleEx.h comme suit:

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

@interface NativeModuleEx : NSObject <RCTBridgeModule>

@end

Dans votre NativeModuleEx.m ajoutez le code suivant:

#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() rendra votre module accessible en JavaScript, vous pouvez lui transmettre un argument facultatif pour spécifier son nom. Si aucun nom n'est fourni, il correspondra au nom de la classe Objective-C.

RCT_EXPORT_METHOD() exposera votre méthode à JavaScript, seules les méthodes que vous exportez à l'aide de cette macro seront accessibles en JavaScript.

Enfin, dans votre JavaScript, vous pouvez appeler votre méthode comme suit:

import { NativeModules } from 'react-native';

var NativeModuleEx = NativeModules.NativeModuleEx;

NativeModuleEx.testModule('Some String !');


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow