Szukaj…


Utwórz swój moduł macierzysty (IOS)

Wprowadzenie

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

Czasami aplikacja potrzebuje dostępu do interfejsu API platformy, a React Native nie ma jeszcze odpowiedniego modułu. Być może chcesz ponownie użyć istniejącego kodu Objective-C, Swift lub C ++ bez konieczności jego ponownej implementacji w JavaScript lub napisać wysokowydajny, wielowątkowy kod, na przykład do przetwarzania obrazu, bazy danych lub dowolnej liczby zaawansowanych rozszerzeń.

Moduł natywny to po prostu klasa Objective-C, która implementuje protokół RCTBridgeModule .


Przykład

W projekcie Xcode utworzyć nowy plik i wybrać klasę kakao dotykowego, w tworzeniu kreatora wybrać nazwę dla swojej klasy (np NativeModule), sprawiają, że podklasy: NSObject i wybierz Objective-C dla języka.

Spowoduje to utworzenie dwóch plików NativeModuleEx.h i NativeModuleEx.m

Trzeba będzie importować RCTBridgeModule.h do NativeModuleEx.h jak plik następująco:

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

@interface NativeModuleEx : NSObject <RCTBridgeModule>

@end

W swoim NativeModuleEx.m dodaj następujący kod:

#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() sprawi, że moduł będzie dostępny w JavaScript, możesz przekazać mu opcjonalny argument określający jego nazwę. Jeśli nie podano nazwy, będzie pasować do nazwy klasy Objective-C.

RCT_EXPORT_METHOD() narazi twoją metodę na JavaScript, tylko metody eksportowane za pomocą tego makra będą dostępne w JavaScript.

Na koniec w JavaScript możesz wywołać metodę w następujący sposób:

import { NativeModules } from 'react-native';

var NativeModuleEx = NativeModules.NativeModuleEx;

NativeModuleEx.testModule('Some String !');


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow