title: NodesRef

sidebar_label: NodesRef

用于获取 WXML 节点信息的对象

参考文档

方法

boundingClientRect

添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。其功能类似于 DOM 的 getBoundingClientRect。返回 NodesRef 对应的 SelectorQuery

支持情况:NodesRef - 图1 NodesRef - 图2 NodesRef - 图3

参考文档

  1. (callback?: BoundingClientRectCallback) => SelectorQuery
参数 类型 说明
callback BoundingClientRectCallback 回调函数,在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

示例代码

示例 1
  1. Taro.createSelectorQuery().select('#the-id').boundingClientRect(function(rect){
  2. rect.id // 节点的ID
  3. rect.dataset // 节点的dataset
  4. rect.left // 节点的左边界坐标
  5. rect.right // 节点的右边界坐标
  6. rect.top // 节点的上边界坐标
  7. rect.bottom // 节点的下边界坐标
  8. rect.width // 节点的宽度
  9. rect.height // 节点的高度
  10. }).exec()
  11. ##### 示例 2
  1. Taro.createSelectorQuery().selectAll('.a-class').boundingClientRect(function(rects){
  2. rects.forEach(function(rect){
  3. rect.id // 节点的ID
  4. rect.dataset // 节点的dataset
  5. rect.left // 节点的左边界坐标
  6. rect.right // 节点的右边界坐标
  7. rect.top // 节点的上边界坐标
  8. rect.bottom // 节点的下边界坐标
  9. rect.width // 节点的宽度
  10. rect.height // 节点的高度
  11. })
  12. }).exec()

context

添加节点的 Context 对象查询请求。目前支持 VideoContextCanvasContextLivePlayerContextEditorContextMapContext 的获取。

支持情况:NodesRef - 图4 NodesRef - 图5 NodesRef - 图6

参考文档

  1. (callback?: ContextCallback) => SelectorQuery
参数 类型 说明
callback ContextCallback 回调函数,在执行 SelectorQuery.exec 方法后,返回节点信息。

示例代码

  1. Taro.createSelectorQuery().select('.the-video-class').context(function (res) {
  2. console.log(res.context) // 节点对应的 Context 对象。如:选中的节点是 <video> 组件,那么此处即返回 VideoContext 对象
  3. }).exec()

fields

获取节点的相关信息。需要获取的字段在fields中指定。返回值是 nodesRef 对应的 selectorQuery

注意 computedStyle 的优先级高于 size,当同时在 computedStyle 里指定了 width/height 和传入了 size: true,则优先返回 computedStyle 获取到的 width/height。

支持情况:NodesRef - 图7 NodesRef - 图8 NodesRef - 图9

参考文档

  1. (fields: Fields, callback?: FieldsCallback) => SelectorQuery
参数 类型 说明
fields Fields
callback FieldsCallback 回调函数

示例代码

  1. Taro.createSelectorQuery().select('#the-id').fields({
  2. dataset: true,
  3. size: true,
  4. scrollOffset: true,
  5. properties: ['scrollX', 'scrollY'],
  6. computedStyle: ['margin', 'backgroundColor'],
  7. context: true,
  8. }, function (res) {
  9. res.dataset // 节点的dataset
  10. res.width // 节点的宽度
  11. res.height // 节点的高度
  12. res.scrollLeft // 节点的水平滚动位置
  13. res.scrollTop // 节点的竖直滚动位置
  14. res.scrollX // 节点 scroll-x 属性的当前值
  15. res.scrollY // 节点 scroll-y 属性的当前值
  16. // 此处返回指定要返回的样式名
  17. res.margin
  18. res.backgroundColor
  19. res.context // 节点对应的 Context 对象
  20. }).exec()

node

获取 Node 节点实例。目前支持 Canvas 的获取。

支持情况:NodesRef - 图10 NodesRef - 图11 NodesRef - 图12

参考文档

  1. (callback?: NodeCallback) => SelectorQuery
参数 类型 说明
callback NodeCallback 回调函数,在执行 SelectorQuery.exec 方法后,返回节点信息。

示例代码

  1. Taro.createSelectorQuery().select('.canvas').node(function(res){
  2. console.log(res.node) // 节点对应的 Canvas 实例。
  3. }).exec()

scrollOffset

添加节点的滚动位置查询请求。以像素为单位。节点必须是 scroll-view 或者 viewport,返回 NodesRef 对应的 SelectorQuery

支持情况:NodesRef - 图13 NodesRef - 图14 NodesRef - 图15

参考文档

  1. (callback?: ScrollOffsetCallback) => SelectorQuery
参数 类型 说明
callback ScrollOffsetCallback 回调函数,在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

示例代码

  1. Taro.createSelectorQuery().selectViewport().scrollOffset(function(res){
  2. res.id // 节点的ID
  3. res.dataset // 节点的dataset
  4. res.scrollLeft // 节点的水平滚动位置
  5. res.scrollTop // 节点的竖直滚动位置
  6. }).exec()

参数

BoundingClientRectCallback

回调函数,在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

  1. (result: BoundingClientRectCallbackResult) => void
参数 类型
result BoundingClientRectCallbackResult

BoundingClientRectCallbackResult

参数 类型 说明
bottom number 节点的下边界坐标
dataset TaroGeneral.IAnyObject 节点的 dataset
height number 节点的高度
id string 节点的 ID
left number 节点的左边界坐标
right number 节点的右边界坐标
top number 节点的上边界坐标
width number 节点的宽度

ContextCallback

回调函数,在执行 SelectorQuery.exec 方法后,返回节点信息。

  1. (result: ContextCallbackResult) => void
参数 类型
result ContextCallbackResult

ContextCallbackResult

参数 类型 说明
context TaroGeneral.IAnyObject 节点对应的 Context 对象

Fields

参数 类型 必填 说明
computedStyle string[] 指定样式名列表,返回节点对应样式名的当前值
context boolean 是否返回节点对应的 Context 对象
dataset boolean 是否返回节点 dataset
id boolean 是否返回节点 id
mark boolean 是否返回节点 mark
node boolean 是否返回节点对应的 Node 实例
properties string[] 指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值,id class style 和事件绑定的属性值不可获取)
rect boolean 是否返回节点布局位置(left right top bottom
scrollOffset boolean 否 是否返回节点的 scrollLeft scrollTop,节点必须是 scroll-view 或者 viewport
size boolean 是否返回节点尺寸(width height

FieldsCallback

回调函数

  1. (res: TaroGeneral.IAnyObject) => void
参数 类型 说明
res TaroGeneral.IAnyObject 节点的相关信息

NodeCallback

回调函数,在执行 SelectorQuery.exec 方法后,返回节点信息。

  1. (result: NodeCallbackResult) => void
参数 类型
result NodeCallbackResult

NodeCallbackResult

回调函数

参数 类型 说明
node TaroGeneral.IAnyObject 节点对应的 Node 实例

ScrollOffsetCallback

回调函数,在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

  1. (result: ScrollOffsetCallbackResult) => void
参数 类型
result ScrollOffsetCallbackResult

ScrollOffsetCallbackResult

参数 类型 说明
dataset TaroGeneral.IAnyObject 节点的 dataset
id string 节点的 ID
scrollLeft number 节点的水平滚动位置
scrollTop number 节点的竖直滚动位置

API 支持度

API 微信小程序 H5 React Native
NodesRef.boundingClientRect ✔️ ✔️
NodesRef.context ✔️ ✔️
NodesRef.fields ✔️ ✔️
NodesRef.node ✔️ ✔️
NodesRef.scrollOffset ✔️ ✔️