检查节点是否是React / React Native中另一个节点的父节点

时间:2016-06-01 10:27:23

标签: reactjs react-native

我们说我有一个标识为14的React节点。我想检查此节点是否是树中标识为2的另一个节点的子节点。它不一定需要是一个直接的孩子,14可以嵌套在其他几个节点中,但它最终是树中2的孩子, 2是它的祖先。

有没有内置功能呢?

修改

我在我的应用中渲染了几个ScrollView,我希望它们能够自动处理它们包含的TextInput个。我希望能够检查特定TextView是否包含在一个ScrollView中。

3 个答案:

答案 0 :(得分:1)

您可以使用UIManager来验证一个节点是否是另一节点的后代。

import { UIManager } from 'react-native'

UIManager.viewIsDescendantOf(targetNodeId, parentNodeId, (isDescendantOf) => {
  console.log(isDescendantOf)
})

答案 1 :(得分:0)

关于问题的上下文,我建议将context添加到包含scrollview的组件中,并在包含输入的组件中获取上下文。在那里,您可以将传递的回调绑定到输入。

答案 2 :(得分:0)

我知道这是一个老帖子,但我目前正在努力实现类似的目标。

您可以在 ReactNativeComponentTree (react-native / Libraries / Renderer / src / renderers / native /)中找到函数 getInstanceFromNode 。它返回附加到节点ID的组件。

它有一个“ _hostParent ”变量,您可以在其中获得整个组件树。