zoukankan      html  css  js  c++  java
  • 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()
    }

  • 相关阅读:
    .net core 认证与授权(三)
    .net core 认证与授权(二)
    .net core 认证与授权(一)
    算法常识——快速排序
    ip 在网络传输中是如何传递的
    打开c++ 项目遇到的错误
    算法常识——鸡尾酒排序
    算法常识——冒泡排序
    算法常识——排序汇
    Tomcat 生产服务器性能优化
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/13519232.html
Copyright © 2011-2022 走看看