Передача свойств из нативного в React Native при использовании Wix React Native Navigation (RNN)

Передача свойств из нативного в React Native описана здесь. Вот краткое изложение:

NSArray *imageList = @[@"http://foo.com/bar1.png",
                       @"http://foo.com/bar2.png"];

NSDictionary *props = @{@"images" : imageList};

RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                 moduleName:@"ImageBrowserApp"
                                          initialProperties:props];

Однако при использовании Wix React Native Navigation rootView. Согласно документации, вот как выглядит минимальная настройка RNN на iOS:

 #import "AppDelegate.h"

 #import <React/RCTBundleURLProvider.h>
 #import <React/RCTRootView.h>
 #import <ReactNativeNavigation/ReactNativeNavigation.h>

 @implementation AppDelegate

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
     NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
     [ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions];

     return YES;
 }

 @end

Как нам передать реквизит от нативного?


person David Jones    schedule 01.06.2019    source источник


Ответы (2)


Вам потребуется создать собственный модуль для этого. Модуль предоставляет общедоступные методы, которые возвращают результаты путем выполнения обещания .

person guy.gc    schedule 02.06.2019

Поскольку я передаю свойство из React Native в собственный iOS, вам необходимо проверить, не переносится ли собственный iOS в свойство React Native. Вот мой код

В iOS

Appdelegate.h

#import <UIKit/UIKit.h>
#import "React/RCTBridgeModule.h"

@import Firebase;
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeModule>

@property (strong, nonatomic) UIWindow *window;


@end

Appdelegate.m

#import "RCTBundleURLProvider.h"
#import <React/RCTLog.h>

@implementation AppDelegate

RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(addEvent:(NSString *)propertyName)
{
    //Here you get your property value
    var property = propertyName;
    RCTLogInfo(@"Pretending to create an event %@ at %@", areaId);
}

В React Native

MyComponent.js

import { NativeModules } from 'react-native';

var AppDelegate = NativeModules.AppDelegate;
AppDelegate.addEvent(value);
person AjaySoliya    schedule 01.06.2019