2015-07-05 13 views
6

Non sono un programmatore JS o React ma devo utilizzarlo per il mio progetto.Come utilizzare il parametro React Native launch options per RCTRootView

Voglio passare i valori alle mie visualizzazioni React dal mio codice nativo in modo che venga reso dal motore React.

Ho provato molte variazioni

Il mio codice nativo assomiglia:

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>"}; // ??? 

E nella mia reagiscono codice voglio render che JSX:

var ReactForTesting = React.createClass({ 

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

ho provato restituire varie cose nella funzione di rendering - nessuna renderizza:

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().. 

risposta

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; 

Quindi è possibile accedere in qualsiasi this.props.myProp componente è stato passato a AppRegistry.registerComponent.

Non è sicuro il motivo per cui si sta tentando di passare un nodo > di testo > nella stringa, ma sembra una cattiva idea. Basta passare il contenuto del testo quindi utilizzare il componente Text > sul lato JS.

+0

voglio ottenere i nodi da un server (come una stringa) e lascia che React gestisca il rendering. Altrimenti avrò bisogno di creare un parser nel mio codice di reazione per comprendere il testo (descrizione dei nodi) ed emettere il codice di reazione appropriato per produrre i tag –

+0

Che non funzionerà, riceverai una stringa dal lato Obj-C, non saranno componenti. Dovrai comunque analizzare la stringa. –

+0

Ok. Grazie. Conosci un modo per compilare il JSX sul dispositivo piuttosto che sul server del nodo? –

0

Ecco il modo in cui ho risolto questo problema: https://github.com/facebook/react-native/issues/2100

si può solo definire questi oggetti di scena iniziale in un settings.plist

Acclamazioni

+0

Ciao, vorrei sapere perché dobbiamo impostare la visualizzazione radice nel nostro controller di visualizzazione diverso dal delegato dell'app? A cosa serve impostando la vista radice? Puoi spiegarmi chiaramente Plz ... – Ramakrishna