返回

解构Uniapp:移除微信小程序顶部导航栏,保留标题与返回键

前端

告别小程序顶部导航栏:在 Uniapp 中保留标题和返回键

小程序开发中,去除顶部导航栏是一个常见需求。但是,这样做通常会导致标题和返回键的消失,让用户无所适从。在本文中,我们将介绍如何在 Uniapp 中移除导航栏,同时保留这些关键元素。

背景介绍

小程序的顶部导航栏通常包含标题、返回按钮和其他功能。然而,在某些情况下,开发人员可能希望隐藏导航栏,以提供更沉浸式的体验或节省屏幕空间。

准备工作

在开始之前,我们需要准备以下组件和模块:

  • uni-app-nav-bar 组件:提供导航栏功能,包括标题、返回按钮等。
  • uni-store 模块:用于存储状态栏高度。

步骤详解

1. 创建 Store 文件

创建 store 文件夹,并在其中创建一个名为 index.js 的文件。在此文件中,编写以下代码:

import Vuex from 'vuex'
const store = new Vuex.Store({
  state: {
    statusBarHeight: 0 // 状态栏高度
  },
  mutations: {
    setStatusBarHeight (state, height) {
      state.statusBarHeight = height
    }
  }
})

export default store

2. 引入组件和 Store

在需要显示导航栏的页面中,引入以下组件和模块:

<script>
import { uniNavBar, mapState } from '@dcloudio/uni-app'
import store from '@/store/index'
export default {
  // ...
}
</script>

3. 使用组件

在页面中使用 uni-app-nav-bar 组件,并设置必要属性:

<template>
  <uni-app-nav-bar
    :title="title"
    :left-icon="leftIcon"
    :left-text="leftText"
    @click-left="goBack"
  />
</template>

4. 绑定 Store 变量

使用 mapState 将 Store 中的状态栏高度变量绑定到组件中:

computed: {
  ...mapState([
    'statusBarHeight'
  ])
}

5. 应用样式

在组件样式中,应用状态栏高度变量,以调整导航栏的位置:

.uni-nav-bar {
  top: {{ statusBarHeight }}px;
  height: 44px;
}

代码示例

完整代码示例如下:

<template>
  <uni-app-nav-bar
    :title="title"
    :left-icon="leftIcon"
    :left-text="leftText"
    @click-left="goBack"
  />
</template>

<script>
import { uniNavBar, mapState } from '@dcloudio/uni-app'
import store from '@/store/index'
export default {
  data() {
    return {
      title: '我的页面',
      leftIcon: 'back',
      leftText: '返回'
    }
  },
  computed: {
    ...mapState([
      'statusBarHeight'
    ])
  },
  methods: {
    goBack() {
      uni.navigateBack()
    }
  }
}
</script>

常见问题解答

  1. 如何获取状态栏高度?
  • 在 App.vue 文件中,调用 uni.getSystemInfoSync() 获取系统信息,其中包含 statusBarHeight 字段。
  • 将获取的高度存储在 Store 中,并使用 mapState 在组件中访问它。
  1. 导航栏是否可以完全隐藏?
  • 是的,可以通过设置 uni-app-nav-bar 组件的 hidden 属性为 true 来完全隐藏它。
  1. 我可以在导航栏中添加自定义按钮吗?
  • 是的,可以通过在 uni-app-nav-bar 组件中使用 slots 来自定义按钮。
  1. 去除导航栏后,导航返回功能是否正常?
  • 是的,在组件中使用 @click-left 事件监听器,可以调用 uni.navigateBack() 函数返回上一页。
  1. 这种方法是否适用于所有版本的 Uniapp?
  • 是的,此方法适用于 Uniapp 的所有版本。

结论

通过遵循本文中的步骤,您可以在 Uniapp 中轻松地移除小程序顶部导航栏,同时保留标题和返回键。这将为您的应用程序提供更沉浸式的体验或节省屏幕空间,而不会影响用户交互。