广告
返回顶部
首页 > 资讯 > 精选 >uniapp微信小程序底部动态tabBar问题怎么解决
  • 890
分享到

uniapp微信小程序底部动态tabBar问题怎么解决

2023-06-30 08:06:44 890人浏览 安东尼
摘要

这篇文章主要讲解了“uniapp微信小程序底部动态tabBar问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“uniapp微信小程序底部动态tabBar问题怎么解决”吧!需求分包中

这篇文章主要讲解了“uniapp微信小程序底部动态tabBar问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“uniapp微信小程序底部动态tabBar问题怎么解决”吧!

需求

分包中如果有6个页面A B C D E F,这6个页面可以作为tabbar页面进行展示,具体配置通过后台接口返回(页面数量限制依然存在 2 - 5),比如后台配置A B C D E这个5个页面为tabbar页面,那么A B C D E将作为tab页展示,跳转方式也是tab方式跳转,跳转到F页面为普通navigate跳转。
这将解决 多商家底部tab配置问题,可以让商家自己配置小程序tab页的展示模式。

实现原理

自定义底部导航,数据通过接口获取

将需要配置成tab的页面内容抽离成为组件,对应页面直接引用组件,tab页面引用全部组件,并根据当前tab页对应的组件页面路径分别展示。

解决组件的生命周期问题。

实现

页面整体结构

uniapp微信小程序底部动态tabBar问题怎么解决

pages.JSON页面配置好5个tabbar模板页面,并且使用了easycom模式,自动加载组件

 "easycom": {    "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.Vue",    "^sww-(.*)": "@/components/sww-$1/sww-$1.vue"  },"tabBar": {    "color": "#7A7E83",    "selectedColor": "#3cc51f",    "borderStyle": "black",    "backgroundColor": "#ffffff",    "list": [      {        "pagePath": "pages/index/index"      },      {        "pagePath": "pages/module-page-one/index"      },      {        "pagePath": "pages/module-page-two/index"      },      {        "pagePath": "pages/module-page-three/index"      },      {        "pagePath": "pages/module-page-four/index"      }    ]  }

自定义tabbar使用的uview组件

//sww-tab-bar<template>  <u-tabbar v-model="current" :list="vuex_tab_bar.list" :active-color="vuex_tab_bar.activeColor"            :inactive-color="vuex_tab_bar.inactiveColor"            @change="onChange"></u-tabbar></template><script>import {mapState} from 'vuex'import {uniLinkTo} from "../../utils/uniPromise";export default {  data() {    return {}  },  computed: {    ...mapState(['vuex_tab_bar', 'vuex_tab_page']),    current: {      get(){        return this.$store.state.vuex_tab_bar.current      },      set(value){        this.$store.commit('$uStore',{name: 'vuex_tab_bar.current', value})      }    }  },  methods: {    onChange(index) {      uniLinkTo(this.vuex_tab_page[index], 'tab')    }  }}</script><style lang="sCSS" scoped>::v-deep .u-fixed-placeholder {opacity: 0;}</style>

vuex中保存的tabbar数据格式

 vuex_tab_bar: {            list: [],            activeColor: '',            inactiveColor: '',            current: 0        },vuex_tab_bar_default: { //接口未获取到数据时使用的默认tabbar            list: [                {                    iconPath: '/static/tab/home.png',                    selectedIconPath: '/static/tab/home_fill.png',                    text: '首页',                    url: '/package/index/index'                },                {                    iconPath: '/static/tab/cat.png',                    selectedIconPath: '/static/tab/cat_fill.png',                    text: '分类',                    url: '/package/product/cateGory/index'                },                {                    iconPath: '/static/tab/commUnity.png',                    selectedIconPath: '/static/tab/community_fill.png',                    text: '链圈',                    url: '/package/index/circle/index'                },                {                    iconPath: '/static/tab/cart.png',                    selectedIconPath: '/static/tab/cart_fill.png',                    text: '购物车',                    // url: '/package/user/order/index'                    url: '/package/user/cart/index'                },                {                    iconPath: '/static/tab/user.png',                    selectedIconPath: '/static/tab/user_fill.png',                    text: '我的',                    url: '/package/user/index'                }            ],            activeColor: '#e93324',            inactiveColor: '#666666',            current: 0        },

上面的步骤已经完成了自定义底部tabbar,接下来是tab页面中使用组件的方式和tabbar数据的获取

//这里的代码是5个模板tab页面的内容,页面引入了所有可配置成为tab的组件,js部分抽离到mixins中进行代码复用<template>  <view class="index-box">    <block v-if="pageModuleName('/package/index/index')">      <sww-page-home ref="modulePageRef"></sww-page-home>    </block>    <block v-if="pageModuleName('/package/product/category/index')">      <sww-page-category ref="modulePageRef"></sww-page-category>    </block>    <block v-if="pageModuleName('/package/index/circle/index')">      <sww-page-circle ref="modulePageRef"></sww-page-circle>    </block>    <block v-if="pageModuleName('/package/user/cart/index')">      <sww-page-cart ref="modulePageRef"></sww-page-cart>    </block>    <block v-if="pageModuleName('/package/user/index')">      <sww-page-user ref="modulePageRef"></sww-page-user>    </block>    <block v-if="pageModuleName('/package/user/order/index')">      <sww-page-order ref="modulePageRef"></sww-page-order>    </block>    <sww-tab-bar ref="tabBarRef"></sww-tab-bar>    <sww-login></sww-login>  </view></template><script>import {tabpage} from "../../mixins/tabPage";export default {  mixins: [tabPage],  data() {    return {      tabIndex: 4    }  }}</script><style>page {  width: 100%;  height: 100%;}.index-box {  width: 100%;  height: 100%;}</style>
// tabPagemixinsimport {mapState} from 'vuex'const App = getApp()export const tabPage = {    computed: {        ...mapState(['vuex_tab_bar', 'vuex_module_page']),        //获取当前tab页要显示的页面组件        pageModuleName(name) {            return (name) => {                if (this.vuex_tab_bar.list.length > 0) {                //这里的url是后台用户配置的页面路径,此路径是分包中实际存在的页面路径,比如A页面要配置成为tab,那么就将A页面内容抽离成组件,后台配置此页面为tab,只需将A页面的实际路径进行配置即可                    return this.vuex_tab_bar.list[this.tabIndex].url === name                } else {                    return false                }            }        }    },    onLoad: function () {        this.$nextTick(() => {            try {                if (this.vuex_tab_bar.list.length === 0) {                   App.loadTabBarList().then(() => {                       this.$refs.modulePageRef.$onLoad()                   })                } else {                    this.$refs.modulePageRef.$onLoad()                }            } catch (e) {            }        })    },    // isoH5在onshow时要重置分享    onShow: function () {        this.$nextTick(() => {            try {                this.$refs.modulePageRef.$onShow()            } catch (e) {            }        })    },    onHide: function () {        this.$nextTick(() => {            try {                this.$refs.modulePageRef.$onHide()            } catch (e) {            }        })    },    onPullDownRefresh: function () {        try {            this.$refs.modulePageRef.$onPullDownRefresh()        } catch (e) {        }    },    onReachBottom: function () {        try {            this.$refs.modulePageRef.$onReachBottom()        } catch (e) {        }    },    // 微信小程序分享(好友)    onShareAppMessage: function () {        return this.$refs.modulePageRef.getShareAppMessage()    },    // 微信小程序分享(朋友圈)    onShareTimeline: function () {        return this.$refs.modulePageRef.getShareTimeline()    }}

感谢各位的阅读,以上就是“uniapp微信小程序底部动态tabBar问题怎么解决”的内容了,经过本文的学习后,相信大家对uniapp微信小程序底部动态tabBar问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: uniapp微信小程序底部动态tabBar问题怎么解决

本文链接: https://www.lsjlt.com/news/327787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • uniapp微信小程序底部动态tabBar问题怎么解决
    这篇文章主要讲解了“uniapp微信小程序底部动态tabBar问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“uniapp微信小程序底部动态tabBar问题怎么解决”吧!需求分包中...
    99+
    2023-06-30
  • uniapp微信小程序底部动态tabBar的解决方案(自定义tabBar导航)
    目录需求实现原理实现总结需求 分包中如果有6个页面A B C D E F,这6个页面可以作为tabbar页面进行展示,具体配置通过后台接口返回(页面数量限制依然存在 2 - 5),比...
    99+
    2022-11-13
  • 微信小程序自定义tabbar问题怎么解决
    这篇文章主要介绍“微信小程序自定义tabbar问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序自定义tabbar问题怎么解决”文章能帮助大家解决问题。1、首先按照官方组件在app...
    99+
    2023-06-29
  • 微信小程序兼容性问题怎么解决
    这篇文章主要介绍“微信小程序兼容性问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序兼容性问题怎么解决”文章能帮助大家解决问题。运行环境差异微信小程序运行在三端:iOS、Andro...
    99+
    2023-06-26
  • 微信小程序怎么解决获取流量的问题
    这篇文章主要介绍“微信小程序怎么解决获取流量的问题”,在日常操作中,相信很多人在微信小程序怎么解决获取流量的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序怎么解决获取流量的问题”的疑惑有所帮助!...
    99+
    2023-06-27
  • 如何解决微信小程序中自定义tabbar custom-tab-bar 6s出不来的问题
    这篇文章主要介绍了如何解决微信小程序中自定义tabbar custom-tab-bar 6s出不来的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
    99+
    2022-10-19
  • 微信小程序使用picker组件出现问题怎么解决
    本篇内容主要讲解“微信小程序使用picker组件出现问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序使用picker组件出现问题怎么解决”吧!一、picker基本概念先来看一...
    99+
    2023-07-04
  • uniapp 开发小程序之实现不同身份展示不同的 tabbar(底部导航栏),附带相关问题解答
    效果展示:   引言 在开发过程中逐渐意识到uniapp原生的tabbar可能不能满足开发要求,通过浏览博客才选择使用uView的Tabbar 底部导航栏来实现,我选择用的是2X版本 安装 我是使用Hbuilder插件的方式引入的组件库,...
    99+
    2023-09-13
    uni-app 小程序
  • 微信小程序开发常见问题有哪些及怎么解决
    这篇“微信小程序开发常见问题有哪些及怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序开发常见问题有哪些及怎么...
    99+
    2023-06-26
  • 解决uni-app微信小程序底部input输入框,键盘弹起时页面整体上移问题
    一.存在的问题:          微信小程序聊天界面,当input 框获取焦点时会自动调起手机键盘,当键盘弹起时,会导致页面整体上移,页面头信息会消失不见。 二.需要实现的效果 键盘弹出时, 底部的输入框跟随键盘上弹 ;页面头固定在顶部不...
    99+
    2023-09-01
    uni-app javascript 微信小程序 小程序
  • 微信小程序组件scroll-view滚动到底部多次触发加载如何解决?
    在 iOS 真机上,scroll-view 滚动时会多次触发 scrolltolower 事件的问题,可以设置一个“加载标识”(如 DisableTrigger)来避免重复请求下一页数据。具体做法为:...
    99+
    2023-09-06
    小程序
  • 怎么解决微信小程序防止无法回到主页的问题
    这篇文章主要为大家展示了“怎么解决微信小程序防止无法回到主页的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么解决微信小程序防止无法回到主页的问题”这篇文...
    99+
    2022-10-19
  • 怎么解决微信小程序设置padding-right和margin-right无效问题
    这篇文章主要介绍“怎么解决微信小程序设置padding-right和margin-right无效问题”,在日常操作中,相信很多人在怎么解决微信小程序设置padding-right和margin-right无效问题问题上存在疑惑,小编查阅了各...
    99+
    2023-06-04
  • 微信小程序scroll-view不能左右滑动问题的解决方法
    最近在做自己小程序项目。因为并非专业前端 。所以一步一掉坑。在这里想着把遇到的问题总结一下。避免重复进坑。 问题:     在小程序页面布局的时候用到了...
    99+
    2022-11-12
  • 如何解决微信小程序中scroll-view不能左右滑动的问题
    这篇文章将为大家详细讲解有关如何解决微信小程序中scroll-view不能左右滑动的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题:    在小程序页面布局的时候用到...
    99+
    2023-06-20
  • 微信小程序scroll-view不能左右滑动怎么解决
    本文小编为大家详细介绍“微信小程序scroll-view不能左右滑动怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序scroll-view不能左右滑动怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-08
  • 微信小程序开发的三个问题和解决方案是什么
    微信小程序开发的三个问题和解决方案是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在微信公布小程序的文档和开发工具后,我们在第一时间进行了学习和体验,发现微信小程序的技...
    99+
    2023-06-04
  • 解决基于uniapp的微信小程序,在iOS端无法预览文件,提示文件已损坏问题
    项目场景: 开发了一个小程序,有预览二进制文件的需求。Android端可以成功预览,但iOS端提示文件已损坏,无法预览文件。 问题描述 微信小程序iOS端预览文件,显示无法预览此文件,文件已损坏。但是...
    99+
    2023-09-10
    微信小程序 uni-app ios
  • uni-app开发微信小程序之H5压缩上传图片的问题怎么解决
    这篇文章主要讲解了“uni-app开发微信小程序之H5压缩上传图片的问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“uni-app开发微信小程序之H5压缩上传图片的问题怎么解决”吧...
    99+
    2023-07-05
  • 微信小程序如何解决自定义弹窗滚动与页面滚动冲突的问题
    这篇文章主要介绍微信小程序如何解决自定义弹窗滚动与页面滚动冲突的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下先看效果是否是自己需要的实现步骤:1.整个布局用作为根节...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作