2015-07-05 4 views
6

Ich bin kein JS oder React-Programmierer, aber ich muss es für mein Projekt verwenden.Wie React Native Startoptionen Parameter für RCTRootView verwenden

Ich möchte Werte in meine React-Ansichten von meinem systemeigenen Code übergeben, damit es von der React-Engine gerendert wird.

Ich habe

viele Variationen versucht

Mein nativen Code wie folgt aussieht:

RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 
                 moduleName:@"ReactTesting" 
                launchOptions:@{@"initialProps" : @"<Text>Hello from native code</Text>"}]; 

rootView.initialProperties = @{@"initialProps" : @"<Text>Hello from native code</Text>"}; // ??? 

Und in meinem Code reagieren will ich machen, dass JSX:

var ReactForTesting = React.createClass({ 

render: function() { 
    return (The Launch Options that were sent to this view); //How do I render it? 
    } 
}); 

Ich habe versucht, Rückgabe verschiedener Dinge in der Render-Funktion - keine würde machen:

render : function() { 
    return this.props; // doesn't work 
} 

render : function() { 
    return this.props.initialProps; // doesn't work 
} 

render : function() { 
    return this.props.initialProps; // doesn't work 
} 

also fiddling with: 
React.createElement() 
React.createClass().. 

Antwort

3

In AppDelegate.m:

RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 
              moduleName:@"ReactTesting" 
              launchOptions:launchOptions]; 

NSDictionary *initialProps = [NSDictionary dictionaryWithObject: @"Hello from native code" forKey: @"myProp"]; 

rootView.initialProperties = dict; 

Dann können Sie zugreifen this.props.myProp in beliebigen Komponente, die Sie AppRegistry.registerComponent geben.

Nicht sicher, warum Sie versuchen, einen <Text> Knoten durch in Ihrer Zeichenfolge obwohl, das scheint wie eine schlechte Idee scheint. Übergeben Sie einfach den Textinhalt und verwenden Sie dann die Komponente <Text> auf der JS-Seite.

+0

Ich möchte die Knoten von einem Server erhalten (als Zeichenfolge) und lassen Sie React das Rendern übernehmen. Sonst muss ich einen Parser in meinem reaction code erstellen, um den Text zu verstehen (Beschreibung der Knoten) und den richtigen reaction code zum Erzeugen der Tags ausgeben. –

+0

Das wird nicht funktionieren, Sie erhalten eine Zeichenfolge von der Obj-C Seite, Sie werden keine Komponenten sein. Sie müssen die Zeichenfolge noch analysieren. –

+0

Ok. Vielen Dank. Kennen Sie einen Weg, den JSX auf dem Gerät zu kompilieren, eher durch den Knotenserver? –

0

Dies ist die Art, wie ich dieses Problem behoben haben: https://github.com/facebook/react-native/issues/2100

Sie können nur jene anfänglichen Requisiten in einem settings.plist

Prost definieren

+0

Hallo, ich würde gerne wissen, warum wir die Root-Ansicht in unserem View-Controller anders als App-Delegate setzen müssen? Was ist zu verwenden, indem die Stammansicht festgelegt wird? Kannst du mir das deutlich erklären Plz ... – Ramakrishna