React Native – initialProperties Android

Je travaille sous React-Native et je cherche des accessoires initiaux à JS via Java. Cela peut se faire facilement dans Objective-C avec initialProperties comme ceci:

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

Où initialProperties est un NSDictionary qui sera converti en JSON et disponible dans JS via this.props . Je cherche donc à faire de même dans Android. De l'aide ? Merci

  • Mise en œuvre de la navigation "Drilldown" dans l'interface de l'application Android
  • Alternative à setAlpha dans api niveau 8
  • Comment POST des données dans Android vers le serveur au format JSON?
  • Gestion des exceptions API dans RxJava
  • Problème pour créer NDK avec C ++ dans Android
  • Différence entre dexopt et dex2oat?
  • Android Impossible de crypter la base de données en utilisant sqlcipher en utilisant greendao
  • ArrayAdapter est-il sécurisé en toute sécurité dans Android? Si ce n'est pas le cas, que puis-je faire pour le rendre en sécurité?
  • Android.support.v7.widget.Toolbar dans Eclipse n'a pas pu être créé
  • Création d'un widget d'horloge numérique avec une police personnalisée
  • Comment créer des vignettes vidéo YouTube dans Android?
  • React-Native build failed - impossible d'installer tous
  • 5 Solutions collect form web for “React Native – initialProperties Android”

    Dans Android, vous pouvez passer les initialProperties avec launchOptions tant que Bundle.

    Comme mentionné ici dans le code source: https://github.com/facebook/react-native/blob/7377fdcc70b25eb023e7c6d1b37eeae2a700cb88/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java#L325-L334

    Vous pouvez donc faire quelque chose comme ceci:

     Bundle initialProps = new Bundle(); initialProps.putString("myKey", "myValue"); mReactRootView.startReactApplication(mReactInstanceManager, "MyAwesomeApp", initialProps); 

    GetlauchOptions a été déplacé dans ReactActivityDelegate, maintenant j'utilise ce code:

     public class MainActivity extends ReactActivity { /** * Returns the name of the main component registered from JavaScript. * This is used to schedule rendering of the component. */ @Override protected String getMainComponentName() { return "myAppName"; } @Override protected ReactActivityDelegate createReactActivityDelegate() { return new ReactActivityDelegate(this, getMainComponentName()) { @Nullable @Override protected Bundle getLaunchOptions() { Bundle initialProps = new Bundle(); initialProps.putString("SOME_VARIABLE_1", BuildConfig.SOME_VARIABLE_1); initialProps.putString("SOME_VARIABLE_2", "some variable 2 value"); return initialProps; } }; } 

    À partir de Reaction-native v0.20, vous pouvez remplacer la méthode getLaunchOptions dans le fichier MainActivity.java .

     @Override protected Bundle getLaunchOptions() { Bundle opts = new Bundle(); opts.putBoolean("someValue", true); return opts; } 

    Cela vous permettra d'accéder à someValue partir des someValue de votre composant principal de l'application:

     class App extends React.Component { static propTypes = { someValue: PropTypes.bool, }; render() { return <SomeComponent someValue={this.props.someValue} />; } } AppRegistry.registerComponent('App', () => App); 

    Attention, cela est obsolète dans "native réagir"> 0.34

    https://github.com/facebook/react-native/pull/9320

    C'est le message de validation:

     Move `getLaunchOptions` from ReactActivity to ReactActivityDelegate Summary: After 3c4fd42, `getLaunchOptions` no longer exists in class `ReactActivity`. We need refactor UIExplorerActivity to fix the build error. Closes #9320 Differential Revision: D3696381 Pulled By: astreet fbshipit-source-id: 5700cf2363029a95cfbdaf6230e4f82ea69fb472 master (#2) v0.34.0-rc.0 

    Ainsi, vous devrez modifier cette partie de votre code si vous mettez à jour votre version de réaction, et comme vous ne modifiez pas une méthode qui n'existera pas dans la classe parent, vous ne pourrez peut-être entrer aucun message d'erreur et ce sera difficile Déboguer

    Toutes les réponses ici semblaient un peu dépassées. Avec React-Native 0.42 cela a fonctionné pour moi.

    Dans votre activité (pas d'application) classe faites ceci

     @Override protected ReactActivityDelegate createReactActivityDelegate() { return new ReactActivityDelegate(this, "My Cool App") { @Nullable @Override protected Bundle getLaunchOptions() { Bundle bundle = new Bundle(); if( MainActivity.this.port != null ) { bundle.putInt("port", MainActivity.this.port); } return bundle; } }; } 

    Évidemment, remplacer "port" par ce que vous voulez passer aux accessoires de votre composant principal réagissant principal

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.