ios - 在 React Native 中使用 nativeID/使用 RCTRootView 子视图的正确方法是什么?
问题描述
我有一个现有的 iOS 应用程序,我正在使用 react nativeRCTRootView
为我的应用程序绘制一些组件。
// swift
private lazy var RNContent: RCTRootView = {
let mockData:NSDictionary = ["someProps": self.someProps]
let RNContent = RCTRootView(bridge: self.bridge, moduleName: "RNContent", initialProperties: mockData as [NSObject : AnyObject])!
return RNContent
}()
// JS
AppRegistry.registerComponent('RNContent', () => component);
这是我的 RN 层次结构的样子
<View>
<View>
<Text />
<ScrollView /> <--
<View>
</View>
我想ScrollView
在本机方面掌握这一点。根据文档nativeID
应该有所帮助。RCTRootView
但是,我在 JS 端定义的里面看不到任何子视图。事实上,根视图只有一个名为的子视图RCTRootContentView
,它没有任何其他可用的子视图。
RCRootView
所以我的问题是在本地获取子视图的正确方法是什么?
我尝试了一些方法,例如使用UIManager
'saddUIBlock
来获取视图寄存器,但我认为我缺少与'sRCTRootView
及其工作原理相关的明显一点。
有趣的是,如果我在我的 RN 层次结构中直接使用本机注册组件(通过 注册RCT_EXTERN_MODULE
),我可以看到该组件RCTRootContentView
与
RCTExecuteOnUIManagerQueue {
self.bridge.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in
uiManager?.view(forNativeID: "SelfAssignedID", withRootTag: self. RNContent.reactTag) // nil
viewRegistry?.forEach({ (key: NSNumber, value: UIView) in
print("Test1: ", key, value.nativeID) // only native components has nativeID, which does makes sense because RCTRootContentView doesn't have subviews... but why not? is there a way to get hold of them? If not, why not?
})
}
}
任何帮助都会有所帮助,谢谢!
解决方案
事实上,根视图只有一个名为 RCTRootContentView 的子视图,它没有任何其他可用的子视图。
这对我来说似乎是一个问题。JS 中的<Text/>
节点应该UITextView
在本机内容视图中创建一个子节点。也许尝试实际添加一些内容<Text/>
并<ScrollView/>
让它呈现?
我想在本机端获得这个 ScrollView。
您能否就您正在尝试做的事情提供更多背景信息?我有一种感觉nativeID
API 不是你想要使用的。
推荐阅读
- javascript - 如何遍历值列表并将输出导出到不同的谷歌表
- html - Drag and Resize Position:Absolute 突然停止工作。我能做些什么?
- azure - 无法检索提供者 Terraform Azure 的可用版本列表
- javascript - 不使用 shift() 方法删除数组中的第一个元素
- ajax - 使用 ajax 的雄辩更新不更新
- javascript - 页面底部的弹出窗口 - javascript
- macos - macos 10.12 升级到 icu4c 67.1 失败
- javascript - 我在返回数组的每个值时遇到问题
- php - 警告问题:rawurlencode() 期望参数 1 是字符串,数组中给出
- java - 从终端或命令提示符(如 git 或 maven 或 java 或 javac)运行(不是在开发期间而是在生产中)java 应用程序