Taro 项目怎么获取元素的高度和视口高度

最近做小程序,用的Taro,需要设置空状态居中显示,因为空状态出现的地方不一样,所以需要动态设置,那么就需要获取元素的高度来计算

文档翻了一遍也没有找到,原生js获取高度得到的是null,百度了下一下Taro 怎么获取元素的高度,教程里全都是用原生js,不知道他们怎么得到的

查不到的时候就要想到了强大的chatgpt4,然后去问了一下,果真问到了

Taro 项目怎么获取元素的高度

要获取元素的高度,可以使用 Taro 的 createSelectorQuery 方法。以下是一个简单地获取元素高度的示例:

  1. 首先确保已经安装了 Taro 框架。在项目根目录下执行 taro init myApp 初始化一个新的 Taro 项目。
  2. 切换到创建的项目目录 cd myApp
  3. 在 src/pages/index 目录下创建一个名为 index 的 Taro 页面示例。

在页面的 JSX 中,给需要获取高度的元素添加唯一的 id 属性,例如:

import React, { useEffect } from 'react'
import { View } from '@tarojs/components'
import Taro from '@tarojs/taro'

export default function Index() {
  useEffect(() => {
    getElementHeight()
  }, [])

  const getElementHeight = () => {
    // 创建一个查询,指定要查找的 id
    const query = Taro.createSelectorQuery()
    query.select('#element').boundingClientRect()
    
    // 执行查询,获取结果
    query.exec((res) => {
      if (res && res[0]) {
        console.log('Element height:', res[0].height)
      }
    })
  }

  return (
    <View className='index'>
      <View id='element' style={{ height: '100px', backgroundColor: 'red' }}>Hello Taro</View>
    </View>
  )
}

在这个示例中,我们通过给 View 组件添加 id 属性,并在 useEffect 中调用 getElementHeight 方法来获取元素的高度。getElementHeight 方法使用 Taro.createSelectorQuery() 创建一个查询,根据指定的 id 查找元素,然后执行查询并输出结果中的高度。

该方法调用后,将在控制台中输出获取到的元素高度。

Taro 项目怎么获取视口的高度

在 Taro 项目中,你可以使用 Taro 的 API 来获取视口的高度。具体操作如下:

首先,在你的组件中引入 Taro:

import Taro from '@tarojs/taro';

然后,你可以通过 Taro.getSystemInfo() 方法来获取设备信息,其中包括视口的高度:

Taro.getSystemInfo({
  success: (res) => {
    const windowHeight = res.windowHeight;
    console.log('视口高度:', windowHeight);
  },
  fail: (err) => {
    console.log('获取失败: ', err);
  }
});

Taro.getSystemInfo() 是一个异步方法,它会返回一个 Promise。如果你更喜欢使用 async/await 的方式,可以这样做:

async function getViewportHeight() {
  try {
    const res = await Taro.getSystemInfo();
    const windowHeight = res.windowHeight;
    console.log('视口高度:', windowHeight);
  } catch (err) {
    console.log('获取失败: ', err);
  }
}

getViewportHeight();

以上代码会输出当前设备视口的高度。需要注意的是,在 Taro 项目中,默认单位是 px,请根据实际情况对高度进行处理。

下面是我的获取高度的方法

因为我几个页面加起来拢共也就4个组件来回组合,所以只需要获取每个组件的高度就行了,可以看到res返回的是一个数组,如果没有就返回null

// 获取empty的高度
const getHeight = async () => {
  let windowHeight = 0;
  try {
    const res = await Taro.getSystemInfo();
    windowHeight = res.windowHeight;
  } catch (err) {
    console.log('获取失败: ', err);
  }

  const query = Taro.createSelectorQuery();
  query.select('.calander').boundingClientRect();
  query.select('.time_table').boundingClientRect();
  query.select('.course_all').boundingClientRect();
  query.select(`.${props.type}`).boundingClientRect();

  query.exec((res) => {
    if (res) {
      console.log('res', res);
      let calanderHeight = res[0]?.height || 0;
      let timetableHeight = res[1]?.height || 0;
      let courseHeight = res[2]?.height || 0;
      let emptyHeight = res[0]?.height || 0;

      const margin =
        (windowHeight - calanderHeight - timetableHeight - courseHeight - emptyHeight) / 2 - 20;
      state.margin = margin > 20 ? margin : 20;

      setTimeout(() => {
        state.opacity = 1;
      }, 1);
    }
  });
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23057.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

考研数据结构--图

文章目录 图图的基本概念图的定义种类 图的抽象数据类型图的基本术语1. 端点和邻接点2. 顶点的度、入度和出度3. 完全图4. 稠密图、稀疏图5. 子图6. 路径和路径长度7. 回路或环8. 连通、连通图和连通分量9. 强连通图和强连通分量在一个图中找强连通分量的方法 10. 权和网 图的存…

自信裸辞:一晃 ,失业都3个月了.....

最近&#xff0c;找了很多软测行业的朋友聊天、吃饭 &#xff0c;了解了一些很意外的现状 。 我一直觉得他们技术非常不错&#xff0c;也走的测开/管理的路径&#xff1b;二三月份裸辞的&#xff0c;然后一直在找工作&#xff0c;现在还没找到工作 。 经过我的分析&#xff0…

2023年广东省中职网络安全Web渗透测试解析(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问地址http://靶机IP/task1,分析页面内容,获取flag值,Flag格式为flag{xxx}; 2.访问地址http://靶机IP/task2,访问登录页面。用户user01的密码为1-1000以内的数,获取用户user01的密码,将密码作为Flag进行提交,Flag格式…

如何真正开启docker远程访问2375

注意看官方文档 Configure remote access for Docker daemon | Docker Documentation 1. windows上Docker Desktop开启远程访问端口2375 系统版本&#xff1a; win10专业版 Docker Desktop版本&#xff1a;4.18.0 很简单勾上&#xff0c; 应用并重启即可 2. linux上开启 尝…

设计模式—“接口隔离”

在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采样添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。 典型模式有:Fascade、Proxy、Adapter、Mediator 一、Fascade 动机 上述A方案的问题在于组件的客户和…

性能测试重要知识与TPS上不去原因分析,测试进阶之路卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 常见性能测试术语…

音视频使用qt测试ffmpeg接口时无法运行

仅仅时把自己过程中遇到的稍微阻塞疑惑问题做出整理&#xff0c;疑惑的是拿到的ffmpeg包中没有dll文件&#xff0c;导致自己研究了一系列。 使用qt加载音视频ffmpeg对应的相关lib库&#xff0c;进行接口&#xff0c;源码的研究。 1&#xff1a;使用源码安装的方式获取相关的动…

易基因:全基因组DNA甲基化分析揭示DNMT1在斑马鱼模型听觉系统发育中的作用 | 胚胎发育

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 听力障碍通常与内耳发育不全或损伤有关&#xff0c;是影响生活质量的严重健康问题。因此研究听觉器官发生过程中的关键基因对于探索听力损伤的潜在策略至关重要。斑马鱼模型在理解内耳发…

基于SSM的校园办公管理系统的设计与实现(源码完整)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

噶了呀,现在的00后这么卷的吗?

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里…

企业微信也能接入ChatGPT啦~你也能成功,步骤超详细~

文章目录 配置企业微信创建企业创建应用 配置项目一、OpenAI账号注册二、克隆项目代码三、复制配置文件四、企业微信配置 服务器购买运行项目安装Python安装核心依赖启动项目 个人微信绑定 上次我把ChatGPT接入了微信&#xff08;请看这篇文章当ChatGpt接入微信群之后&#xff…

前几天面了个30岁左右的测试员,年薪50w问题基本都能回答上,必是刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…

论文笔记: Trajectory Clustering: A Partition-and-Group Framework

07 Sigmoid 使用类DBSCAN的思路对轨迹聚类 1 intro 1.1 轨迹聚类 现有的轨迹聚类算法是将相似的轨迹作为一个整体进行聚类&#xff0c;从而发现共同的轨迹。 但是这样容易错过一些共同的子轨迹&#xff08;sub-trajectories&#xff09;。而在实际中&#xff0c;当我们对特…

Redis主从复制,哨兵模式和集群模式

一、主从复制 1、主从复制-哨兵-集群 主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a;故障恢复无法自…

服务器被勒索病毒攻击怎么办,如何进行勒索病毒解密与预防工作?

在当今社会中服务器已经成为企业关键数据存储和传输的重要载体&#xff0c;同样也成为黑客攻击和勒索病毒的首要目标。一旦服务器被勒索病毒攻击&#xff0c;企业的正常运转与经济利益和核心数据都将受到威胁。下面将为大家介绍一下服务器被勒索病毒攻击后应该采取怎样的措施及…

软件系统三基座之一:权限管理

软件系统三基座包含&#xff1a;权限管理、组织架构、用户管理。 何为基座&#xff0c;即是有了这些基础&#xff0c;任一相关的“建筑”就能逐步搭建起来。 万丈高楼平地起 一、为什么要权限管理 权限管理&#xff0c;一般指根据系统设置的安全规则或者安全策略&#xff0c;…

【013】C++数组之一维数值数组和二维数值数组

一维数值数组和二维数值数组 引言一、一维数值数组1.1、概念1.2、一维数值数组的定义1.3、一维数值数组的初始化1.4、一维数值数组的元素操作1.5、使用示例 二、二维数值数组2.1、概述2.2、二维数值数组的初始化2.3、二维数值数组的元素操作2.4、使用示例 总结 引言 &#x1f4…

Windows 安装 GCC

文章目录 GCC 是什么&#xff1f;GCC 和 gcc 什么关系&#xff1f;Windows 安装 GCC选型下载安装配置环境变量验证 参考文献 GCC 是什么&#xff1f; GCC&#xff08;GNU Compiler Collection&#xff09;是一个开源的编译器套件&#xff0c;由 GNU 项目开发和维护。 GNU 编译…

讯飞星火_VS_文心一言

获得讯飞星火认知大模型体验授权&#xff0c;第一时间来测试一下效果&#xff0c;使用申请手机号登录后&#xff0c;需要同意讯飞SparkDesk体验规则&#xff0c;如下图所示&#xff1a; 同意之后就可以进行体验了&#xff0c;界面如下&#xff1a; 讯飞星火效果体验 以下Promp…

数据结构【链表】看完还怕拿不下链表?

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…