我已经开始在现有应用程序中集成React Native,我的意思是我们希望使用尽可能多的RN重构真正的工业化应用程序(相同应用程序的iOS和Android版本),以便将代码库集中在一起(还有一个现有的网络版)。
我们相信,包含多个RCTRootView
共享同一个网桥对我们来说是最好的方法,从基本内容视图开始(共享代码库更容易,更有利可图)并迭代转向越来越多RN中的应用程序部分(动画,导航,...)。
但是当我们调查这种方法时,会出现几个问题,包括技术问题和组织问题。
首先,虽然我们不想成为iOS优先或Android优先,但Android平台似乎没有相同的iOS平台成熟度来完成这类工作。我们遇到了一些问题,如:
ReactRootView
不遵循React生命周期,与iOS的RCTRootView
不同,没有用于更新道具的API:https://github.com/facebook/react-native/issues/6303 ReactRootView
是不可能的。此限制存在于Android发布的第一天(请参阅https://github.com/facebook/react-native/issues/9022)以下不是真正的“问题”,但它增加了对Android支持的疑虑
integrating doc的iOS部分清楚地提到可以使用现有桥接器initWithBridge
初始化视图,API也是明确的。)
在Android上,同一个文档提到多个视图可以共享相同的ReactInstanceManager
,但如果您在捆绑中公开2个组件并使用它,则必须调用两次startReactApplication
并且您将看到2行在Chrome控制台中
Running application "XXX" with appParams
Running application "YYY" with appParams
对我来说听起来不是很优化......我真的在这里创建了2个“RN应用程序”吗?
话虽如此,我们正在寻找反馈和答案: