Как использовать параметр параметров запуска React Native для RCTRootView

Я не программист JS или React, но мне нужно использовать его для своего проекта.

Я хочу передать значения в свои представления React из своего собственного кода, чтобы он отображался движком React.

Я пробовал много вариантов

Мой родной код выглядит так:

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

И в моем коде реакции я хочу отобразить этот JSX:

var ReactForTesting = React.createClass( {

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

Я пробовал возвращать различные вещи в функцию рендеринга - никто не будет отображать:

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

person Avner Barr    schedule 05.07.2015    source источник


Ответы (2)


В 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;

Затем вы можете получить доступ к this.props.myProp в любом компоненте, который вы передали AppRegistry.registerComponent.

Не уверен, почему вы пытаетесь передать узел ‹Text› в своей строке, хотя это кажется плохой идеей. Просто передайте текстовое содержимое, а затем используйте компонент «Текст» на стороне JS.

person Colin Ramsay    schedule 05.07.2015
comment
Я хочу получить узлы с сервера (в виде строки) и позволить React обрабатывать их. В противном случае мне нужно будет создать синтаксический анализатор в моем коде реакции для понимания текста (описание узлов) и выдать правильный код реакции для создания тегов. - person Avner Barr; 05.07.2015
comment
Это не сработает, вы получите строку со стороны Obj-C, они не будут компонентами. Вам все равно придется разобрать строку. - person Colin Ramsay; 06.07.2015
comment
Ok . Спасибо. Знаете ли вы способ скомпилировать JSX на устройстве, а не на сервере узла? - person Avner Barr; 06.07.2015
comment
Я бы открыл новый вопрос по этому поводу, и мы можем обсудить его там. - person Colin Ramsay; 06.07.2015

Вот как я исправил эту проблему: https://github.com/facebook/react-native/issues/2100

Вы можете просто определить эти начальные реквизиты в settings.plist

Ваше здоровье

person gre    schedule 23.07.2015
comment
Привет, я хотел бы знать, почему мы должны установить корневой вид в нашем контроллере представления, отличном от делегата приложения? Какая польза от установки корневого вида? Можете ли вы объяснить мне ясно Plz... - person Ramakrishna; 27.09.2016