如何使用RCTRootView的React Native启动选项参数

时间:2015-07-05 08:37:51

标签: ios facebook reactjs react-native

我不是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()..

2 个答案:

答案 0 :(得分:3)

在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

不确定您为何尝试传递&lt; Text&gt;虽然节点通过你的字符串,这似乎是一个坏主意。只需传递文字内容,然后使用&lt; Text&gt; JS方面的组件。

答案 1 :(得分:0)

以下是解决此问题的方法:https://github.com/facebook/react-native/issues/2100

您可以在settings.plist

中定义这些初始道具

干杯