Taro 小程序 自定義導航欄

在小程序中,有的頁面需求可能須要咱們作一個自定義的導航欄, 今天就來踩一踩坑css

首先須要在app.js 中給全局的導航欄隱藏,redux

1 // app.js
2 
3 window: { 4    navigationStyle: 'custom', 5 }, 6 // navigationStyle 接受兩個參數 ['default', 'custom']: ['系統導航欄, 默認值', '隱藏系統導航欄']

這裏隱藏掉默認的導航欄以後 能夠經過自定義組件的形式,DIY 一個導航欄, 值得注意的是, 當隱藏系統導航欄後, 頁面會直接頂到狀態欄上, 不一樣機型的狀高度可能不一致, 尤爲是針對 蘋果X 的劉海屏等 水滴屏, 須要作適配,小程序

解決方法:  Taro.getSystemInfo  中 有個屬性叫作  statusBarHeight , 經過此方法便可獲取手機狀態欄的高度, 也能夠在 未隱藏系統導航欄時 經過  getSystemInfo  中的  可視區域高度  screenHeight  - 窗口高度  windowHeight - 狀態欄高度  statusBarHeight 的差值結果得出 系統導航欄的高度, 這裏我經過僅拿蘋果手機的不一樣機型進行測試得出 系統導航欄高度爲 44px , 便直接把 自定義導航的高度定爲 44px (有興趣的能夠試試)app

還有知道主要一點的是 隱藏系統導航欄後 右上角膠囊狀的按鈕  仍是後保留在原始位置的測試

1 // app.js
2 
3 Taro.getSystemInfo({}) 4   .then(res  => { 5      Taro.$navBarMarginTop =  res.statusBarHeight || 0
6  }) 7 // 將狀態欄高度掛載全局

這裏的寫法不少 能夠申明在 app.js 中, 也能夠放在 redux中 等等 , spa

接下來自定義 導航欄 Navbar code

 

 1 // src/components/Navbar/index
 2 
 3 import Taro from '@tarojs/taro'
 4 import { View } from '@tarojs/components'
 5 import './index.scss'
 6 class Navbar extends Taro.Component {  7 
 8  render() {  9     const style = { 10       paddingTop: Taro.$navBarMarginTop + 'px'
11  } 12     // 將狀態欄的區域空餘出來
13     return ( 14       <View className='navbarWrap' style={style}>
15         <View className='navbar'>自定義導航欄</View>
16       </View>
17  ); 18  } 19 } 20 export default Navbar 21 
22 // 這裏導航欄內容能夠自行配置

 

而後就是在頁面中使用 自定義導航欄component

頁面中使用方法有兩種, 一種是常規的import 組件, taro 中給咱們提供了第二種方式blog

 1 // index/index.js 首頁
 2 
 3 import NavBar from '../../components/Navbar/index'
 4 
 5 class Index extends Component {  6   config = {  7     navigationBarTitleText: '首頁',  8  usingComponents: {  9       'navbar': '../../components/Navbar/index', // 書寫第三方組件的相對路徑
10  }, 11  } 12  render () { 13     return ( 14       <View className='index'>
15         <NavBar />
16         { /* 方法一 */ } 17         <navbar />
18         { /* 方法一二 */ } 19 
20       </View>
21  ) 22  } 23 } 24 
25 export default Index

所幸的是方法二中一樣支持 懶人路徑寫法, 具體工做中可自行選擇本身喜歡的寫法 這裏就不作演示,ip

 

若是在開發中遇到了  jsEnginScriptError Component is not found in path   相似的報錯,請首先肯定本身路徑的是否正確引用以及大小寫是否有問題,

沒問題的話 , 從新 yarn dev:weapp  便可

相關文章
相關標籤/搜索