自定义Taro的navBar 组件

由于业务特定,头部的内容会不大相同

下面是自定义的navBar 组件

  1. 首先在index.config.ts 文件中 将navigationStyle设置'custom',这样头部自带的内容就不会存在 ,
  2. 自定义navBar 这里自定义了一个计算不同设备头部胶囊的高度hook-useCustomNavBarParams
javascript 复制代码
import { useMemo } from 'react';
import Taro from '@tarojs/taro';

const useCustomNavBarParams = () => {
  const [height, paddingTop] = useMemo(() => {
    const sysInfo = Taro.getSystemInfoSync();
    const menuInfo = Taro.getMenuButtonBoundingClientRect();
    const navigationBarHeight =
      (menuInfo.top - (sysInfo?.statusBarHeight || 0)) * 2 + menuInfo.height;
    return [navigationBarHeight, sysInfo?.statusBarHeight];
  }, []);

  return [height, paddingTop];
};

export default useCustomNavBarParams;

navBar组件如下,在本组件就用到了自定的hook-useCustomNavBarParams

javascript 复制代码
import { FC, memo } from 'react';
import { StandardProps, View } from '@tarojs/components';

import useCustomNavBarParams from '@/hooks/useCustomNavBarParams';

import styles from './index.module.less';

const NavBar: FC<StandardProps> = ({ style = {}, className, ...rest }) => {
 
  const [height, paddingTop] = useCustomNavBarParams();

  return (
    <View
      style={Object.assign(
        {
          height: `${height}px`,
          paddingTop: `${paddingTop}px`,
        },
        style
      )}
      className={`${styles?.navBar} ${className}`}
      {...rest}
    >
      <text className={styles.name}>****</text>
      
    </View>
  );
};

export default memo(NavBar);
相关推荐
2501_946233894 分钟前
Flutter与OpenHarmony Tab切换组件开发详解
android·javascript·flutter
3秒一个大6 分钟前
LangChain 中的 Output 解析器与 Zod:用法与意义
javascript·langchain
2501_946233897 分钟前
Flutter与OpenHarmony订单详情页面实现
android·javascript·flutter
2501_944446007 分钟前
Flutter&OpenHarmony日期时间选择器实现
前端·javascript·flutter
二狗哈9 分钟前
Cesium快速入门34:3dTile高级样式设置
前端·javascript·算法·3d·webgl·cesium·地图可视化
2501_944446009 分钟前
Flutter&OpenHarmony拖拽排序功能实现
android·javascript·flutter
JS_GGbond9 分钟前
前端实战:让表格Header优雅吸顶的魔法
前端
2501_9444417510 分钟前
Flutter&OpenHarmony商城App下拉刷新组件开发
javascript·flutter·ajax
AlanHou10 分钟前
Three.js:Web 最重要的 3D 渲染引擎的技术综述
前端·webgl·three.js
JS_GGbond12 分钟前
前端必备技能:彻底搞懂JavaScript深浅拷贝,告别数据共享的坑!
前端