1***@qq.com
1***@qq.com
  • 发布:2022-06-11 11:37
  • 更新:2022-10-27 16:56
  • 阅读:2705

uni.createSelectorQuery无法获取到子组件里面的元素

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win7专业版

HBuilderX类型: 正式

HBuilderX版本号: 3.4.6

第三方开发者工具版本号: stable 1.05.2204250

基础库版本号: 2.24.5

项目创建方式: HBuilderX

示例代码:
// pages/index/index.vue  
... html  
<template>  
    <view class="my-skeleton">  
        <view class="my-skeleton-rect" style="marign-bottom: 10px;">我是容器里面的内容</view>  
        <view class="my-skeleton-rect" style="marign-bottom: 10px;">我是容器里面的内容</view>  
        <view class="my-skeleton-rect" style="marign-bottom: 10px;">我是容器里面的内容</view>  
      <childSkeleton :loading="loading"></childSkeleton>  
    </view>  
</template>  

... js  
mounted() {  
    setTimeout(() => {  
      const query = uni.createSelectorQuery().in(this);  
      query.selectAll('.my-skeleton-rect').boundingClientRect().exec((res) => {  
        // 这里只打印了3个元素,按理来说应该打印4个元素  
        // 输出了  
        // 0: {id: "", dataset: {…}, left: 0, right: 320, top: 0, …}  
        // 1: {id: "", dataset: {…}, left: 0, right: 320, top: 21, …}  
        // 2: {id: "", dataset: {…}, left: 0, right: 320, top: 42, …}  
        console.error('获取到的所有矩形元素1:', res)  
      });  
    }, 1000);  

    this.$nextTick(() => {  
      const query = uni.createSelectorQuery().in(this);  
      query.selectAll('.my-skeleton-rect').boundingClientRect().exec((res) => {  
        // 这里只打印了3个元素,按理来说应该打印4个元素  
        // 输出了  
        // 0: {id: "", dataset: {…}, left: 0, right: 320, top: 0, …}  
        // 1: {id: "", dataset: {…}, left: 0, right: 320, top: 21, …}  
        // 2: {id: "", dataset: {…}, left: 0, right: 320, top: 42, …}  
        console.error('获取到的所有矩形元素2:', res)  
      });  
    })  
}  

// components/childSkeleton/childSkeleton  
... html  
<template>  
    <view class="my-skeleton-rect" style="marign-bottom: 10px;">我是子容器里面的内容</view>  
</template>

操作步骤:
  1. 创建uniapp普通模板项目
  2. 编写项目代码示例里面的代码

预期结果:

打印4个元素

实际结果:

只打印3个元素

bug描述:

使用uni.createSelectorQuery获取不到子组件里面的元素

2022-06-11 11:37 负责人:无 分享
已邀请:
1***@163.com

1***@163.com

userInfo为组件的ref

uni.createSelectorQuery().in(this.$refs.userInfo)
.select("#person") //目标节点
.boundingClientRect((target) => {})
.exec();

该问题目前已经被锁定, 无法添加新回复