首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一个RCTBridge中识别多个RCTRootViews

如何从一个RCTBridge中识别多个RCTRootViews
EN

Stack Overflow用户
提问于 2016-06-30 21:11:37
回答 1查看 131关注 0票数 0

我有许多RCTRootViews在许多UIViewControllers.They共享相同的RCTBridge。

我检查了源代码,发现RCTUIManager存储了所有键为"ReactTag“的RCTRootViews。

其中一个RCTRootViews有一个TouchableHighlight组件。这是onPress()通过RCTBridge调用CustomNativeModule。

当RCTBridge收到来自TouchableHighlight的js代码的调用时。我找不到它属于哪个RCTRootView。

我想我可以得到“根ReactTag",这样我就可以从RCTUIManager中找到正确的RCTRootView。

但是我不知道如何在TouchableHighlight的onPress()函数中获得“根ReactTag”。

我不擅长js,我查看了js的源代码,发现了一种奇怪的var root = this.children._owner._rootNodeID; var nativeTopRootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(root); var reactTag = ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID];方法

这似乎就是我想要的,有了这个'reactTag‘,我就可以从RCTUIManager中得到正确的RCTRootView。

但是,在这种情况下感觉很奇怪。

当多个RCTRootView共享相同的RCTBridge时,有没有更好的方法从多个RCTRootViews中识别出一个RCTBridge?

EN

回答 1

Stack Overflow用户

发布于 2016-07-03 20:54:48

好的,我发现在js中写事件(OnPress)。使用事件参数。

代码语言:javascript
复制
var marker = event.dispatchMarker;
var rootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(marker);
var rootTag = ReactNativeTagHandles.rootNodeIDToTag[rootID];

我觉得这比用.children._owner._rootNodeID要好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38124179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档