微信小程序taro使用nutui自定义 Tabbar

nutui 根据官方教程按照,这里就不写了

1.打开app.config.ts,在window后新增加源文件如下

export default defineAppConfig({
  pages: [
    'pages/index/index'
  ],
  window: {
    backgroundTextStyle: 'light',
    navigationBarBackgroundColor: '#fff',
    navigationBarTitleText: 'WeChat',
    navigationBarTextStyle: 'black'
  },
  // 一下都是新增内容包括usingComponents
  tabBar: {
    custom: true,
    list: [
      {
        pagePath: 'pages/index/index',
        text: '首页'
      },
      {
        pagePath: 'pages/my/index',
        text: '我的'
      }
    ]
  },
  "usingComponents": {}
})

新建pages/my/index目录及代码
2.添加 custom-tab-bar
在 src 目录下添加 custom-tab-bar 目录,注意custom-tab-bar的目录结构和pages同级。
结构如下:

├── config
├── src
|   └── custom-tab-bar
|   |    ├── index.config.ts
|   |    └── index.vue
|    ——— pages
└── package.json

index.config.ts填写如下

export default {
    "component": true
  }

注意:自定义 TabBar 组件使用小程序的 Component 构造器构造,开发者在处理样式隔离等问题时可以需要对 Component 进行配置。
并且只支持 Options API 写法,不支持 <script setup>。所以nutui官网的导航组件示例要改造下。index.vue如下:

<template>
  <nut-tabbar v-model="active" @tab-switch="tabSwitch">
    <nut-tabbar-item tab-title="Home">
      <template #icon>
        <Home></Home>
      </template>
    </nut-tabbar-item>
    <nut-tabbar-item tab-title="Category">
      <template #icon>
        <Category></Category>
      </template>
    </nut-tabbar-item>
    <nut-tabbar-item tab-title="Find">
      <template #icon>
        <Find></Find>
      </template>
    </nut-tabbar-item>
    <nut-tabbar-item tab-title="Cart">
      <template #icon>
        <Cart></Cart>
      </template>
    </nut-tabbar-item>
    <nut-tabbar-item tab-title="My">
      <template #icon>
        <My></My>
      </template>
    </nut-tabbar-item>
  </nut-tabbar>
</template>

<script>
import { ref } from 'vue'
import { Home, Category, Find, Cart, My } from '@nutui/icons-vue-taro'

export default {
  options: {
      addGlobalClass: true,
  },
  components: {
    ref,Home, Category, Find, Cart, My
  },
  data() {
    const active = ref(0);
    return { active };
  },
  methods: {
    // 组件的方法
    tabSwitch(item,index){
      console.log(item, index)
    }
  },
}
</script>

这样就把nutui的导航引入进来的,但是还没有实现自己页面的跳转。

参考官网文档:
https://docs.taro.zone/docs/custom-tabbar
https://nutui.jd.com/taro/vue/4x/#/zh-CN/guide/intro