当前位置:   article > 正文

uni-app中如何自定义实现tabbar导航栏_uniapp自定义tabbar

uniapp自定义tabbar

1、首先在page.json中不用再定义tabbar属性

2、在components文件中自定义一个tabbar组件,这里也可以引用uview-ui中的tabbar底部导航栏,我这里就是引用的uview-ui中的tabbar。

3、pages中的4个主页面,分别为Home(首页)、Work(工作)、Message(消息)、My(我的),再创建一个总页面index,将Home、Work、Message、My分别引入到Index总页面,相当于将这4个主页面作为总页面的组件,同时再总页面Index中引入自定义的tabbar标签,这样可以控制对4个主页面的切换,我之前再网上耶看过很多,感觉比较繁琐,所以自己想了一个这种方式实现自定义的tabbar底部导航栏。

4、代码分享如下:

首先是自己引用的tabbar底部导航栏,具体使用查看uview-ui

  1. <template>
  2. <view>
  3. <u-tabbar :value="name" :fixed="true" :placeholder="false" activeColor="#d81e06"
  4. :safeAreaInsetBottom="false" :activeColor="'#F85252'" :inactiveColor="'#BFBFBF'">
  5. <u-tabbar-item text="首页" name="Home" @click="goPage('Home')" >
  6. <image class="u-page__item__slot-icon" slot="active-icon" :src="'/static/active-icon/shouye @2x.png' | getStaticUrl"
  7. style="width: 50rpx; height: 50rpx;"></image>
  8. <image class="u-page__item__slot-icon" slot="inactive-icon" :src="'/static/icon/shouye @2x.png'| getStaticUrl"
  9. style="width: 50rpx; height: 50rpx;">
  10. </image>
  11. </u-tabbar-item>
  12. <u-tabbar-item text="工作" name="Work" @click="goPage('Work')">
  13. <image class="u-page__item__slot-icon" slot="active-icon" :src="'/static/active-icon/gongzuo@2x.png' | getStaticUrl"
  14. style="width: 50rpx; height: 50rpx;"></image>
  15. <image class="u-page__item__slot-icon" slot="inactive-icon" :src="'/static/icon/gongzuo@2x.png' | getStaticUrl "
  16. style="width: 50rpx; height: 50rpx;">
  17. </image>
  18. </u-tabbar-item>
  19. <u-tabbar-item text="消息" name="Message" @click="goPage('Message')">
  20. <image class="u-page__item__slot-icon" slot="active-icon" :src="'/static/active-icon/xiaoxi@2x.png'| getStaticUrl "
  21. style="width: 50rpx; height: 50rpx;"></image>
  22. <image class="u-page__item__slot-icon" slot="inactive-icon" :src="'/static/icon/xiaoxi@2x.png' | getStaticUrl "
  23. style="width: 50rpx; height: 50rpx;">
  24. </image>
  25. </u-tabbar-item>
  26. <u-tabbar-item text="我的" name="Mine" @click="goPage('Mine')">
  27. <image class="u-page__item__slot-icon" slot="active-icon" :src="'/static/active-icon/wode@2x.png' | getStaticUrl "
  28. style="width: 50rpx; height: 50rpx;"></image>
  29. <image class="u-page__item__slot-icon" slot="inactive-icon" :src="'/static/icon/wode@2x.png' | getStaticUrl"
  30. style="width: 50rpx; height: 50rpx;">
  31. </image>
  32. </u-tabbar-item>
  33. </u-tabbar>
  34. </view>
  35. </template>
  36. <script>
  37. export default {
  38. props: {
  39. name: String
  40. },
  41. methods:{
  42. goPage(name){
  43. this.$emit('changtab', name)
  44. }
  45. }
  46. }
  47. </script>
  48. <style lang="scss" scoped>

第二创建总页面Index,然后引入自己写好的4个主页面(home\work\message\my)代码如下:

  1. <template>
  2. <view class="index-container">
  3. <view class="index-content">
  4. <Home v-if="pageFlag === 'Home'" @click="changtab()"></Home>
  5. <Message v-else-if="pageFlag === 'Message'"></Message>
  6. <Mine v-else-if="pageFlag === 'Mine'"></Mine>
  7. <Work v-else-if="pageFlag === 'Work'"></Work>
  8. </view>
  9. <tabBar :name="pageFlag" @changtab="changtab()"></tabBar>
  10. </view>
  11. </template>
  12. <script>
  13. import Mine from '../my/my.vue';
  14. import Home from "../home/home.vue";
  15. import Message from "../message/message.vue";
  16. import Work from "../worklist/worklist.vue";
  17. export default {
  18. components: {
  19. Mine,
  20. Home,
  21. Message,
  22. Work
  23. },
  24. data: () => ({
  25. pageFlag: 'Home'
  26. }),
  27. methods: {
  28. changtab(name) {
  29. this.pageFlag = name;
  30. },
  31. }
  32. }
  33. </script>
  34. <style>
  35. </style>

总页面和4个主页面都是在pages文件夹下创建的,希望对大家有所帮助,不足之处请指教

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/103243
推荐阅读
相关标签
  

闽ICP备14008679号