• Taro 3.x 小程序导航栏高度等精确数据的hooks


    hooks代码如下,useNavInfo.tsx

    import React, {useState, useEffect} from 'react'
    import Taro from '@tarojs/taro'
    
    interface INavInfo {
      statusBarHeight: number
      titleBarHeight: number
      titelBarWidth: number
      appHeaderHeight: number
      marginSides: number
      capsuleWidth: number
      capsuleHeight:number
      capsuleLeft: number
      contentHeight: number
      screenHeight: number
      windowHeight: number
    }
    
    function useNavInfo(): INavInfo {
      const [navInfo, setNavInfo] = useState({
        statusBarHeight: 0,
        titleBarHeight: 0,
        titelBarWidth: 0,
        appHeaderHeight: 0,
        marginSides: 0,
        capsuleWidth: 0,
        capsuleHeight: 0,
        capsuleLeft: 0,
        contentHeight: 0,
        screenHeight: 0,
        windowHeight: 0,
      })
    
      useEffect(() => {
        console.log('sssss', Taro.getSystemInfoSync())
        const { statusBarHeight, screenWidth, screenHeight, windowHeight } = Taro.getSystemInfoSync()
        // 获取胶囊信息
        const { width, height, left, top, right } = Taro.getMenuButtonBoundingClientRect()
        // 计算标题栏高度
        const titleBarHeight = height + (top - statusBarHeight) * 2
        // 计算导航栏高度
        const appHeaderHeight = statusBarHeight + titleBarHeight
        //边距,两边的
        const marginSides = screenWidth - right
        //标题宽度
        const titelBarWidth = screenWidth - width - marginSides * 3
        //去掉导航栏,屏幕剩余的高度
        const contentHeight = screenHeight - appHeaderHeight
    
        setNavInfo({
          statusBarHeight: statusBarHeight, //状态栏高度
          titleBarHeight: titleBarHeight,  //标题栏高度
          titelBarWidth: titelBarWidth,  //标题栏宽度
          appHeaderHeight: appHeaderHeight, //整个导航栏高度
          marginSides: marginSides, //侧边距
          capsuleWidth: width, //胶囊宽度
          capsuleHeight: height, //胶囊高度
          capsuleLeft: left,
          contentHeight: contentHeight,
          screenHeight: screenHeight,
          windowHeight: windowHeight,
        })
      }, [])
      
      return navInfo
    }
    
    
    export default useNavInfo

    使用:

    import useNavInfo from '../hooks/useNavInfo.tsx'
    
    function somePage(){
        const {appHeaderHeight} = useNavInfo()
    }

  • 相关阅读:
    深入理解 Netty-新连接接入
    深入理解 Netty-Channel架构体系
    深入理解 NioEventLoop启动流程
    深入理解 NioEventLoopGroup初始化
    java8-Stream
    WebSocket+Netty构建web聊天程序
    Jpa 笔记
    观察者模式
    一只垂直的小爬虫
    字符集编码全方位解析
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/13519232.html
Copyright © 2020-2023  润新知