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

  • Signature des saveurs de produits avec gradle
  • Comment puis-je obtenir la valeur de numérotation de la colonne Web, la page actuelle ou l'ID de la colonne?
  • Modifier l'arrière-plan du message d'erreur d'EditText
  • Qu'est-ce que "l'API de stockage DOM" signifie?
  • Changer l'indicateur extensible dans ExpandableListView
  • Android httpclient se bloque sur une seconde requête sur le serveur (la connexion a expiré)
  • Déterminer et lier l'événement de clic ou "toucher"
  • Pourquoi GetCount est-il appelé à plusieurs reprises dans PagerAdapter?
  • Android offre une image miniaturisée de l'image stockée sur la carte sd dont le chemin est connu
  • L'emballage des applications d'usure Android échoue avec des saveurs
  • Les requêtes ioniques renvoient 404 uniquement sur Android, dans Chrome, ça marche bien
  • ERREUR: la correspondance de la cible d'instruction de traitement " " n'est pas autorisée
  • 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.