在现有 iOS 应用程序中仅对某些视图使用 React Native

Using React Native within existing iOS app for some views only

是否可以只对项目中的一个视图使用 React Native?

我已经为特定 iOS 应用程序屏幕成功添加了 React 视图(使用 "Integration with existing iOS project" 文档中的说明),但我不知道如何从该屏幕获取数据并调用其他 ( objective-c) 代码。例如,我想将旧的基于故事板的搜索表单替换为 React 视图,然后在用户单击 "Search".

时调用基于故事板的屏幕

或者它打算在 React 中制作所有视图并将现有的非 React 视图转换为 'native' 组件(对于大型应用程序来说非常庞大的工作)?

这可以通过此处描述的本机模块概念轻松实现 - https://facebook.github.io/react-native/docs/nativemodulesios.html

您可以通过一次调用将 obj-c 方法导出到 JS。

我已经通过以下方式解决了我的问题:

  1. 围绕 NSNotificationCenter 创建原生模块包装器,因此 javascript 代码可以发布 iOS 事件。

  2. 在 React-Native 代码周围的 ReactController-wrapper 中订阅该事件。

  3. 当用户单击“搜索”时触发事件(当我们需要将控制权交还给 objective-c)时,需要的数据作为字典传递。

  4. 捕捉事件,处理数据,开启其他controllers/etc