小程序配置tabBar

191 阅读1分钟

小程序配置tabBar

1. 配置信息
- 在app.json中的tabBar项内指定custom字段,同时其余tabBar相关配置也补充完整。
- 要所有tab页的json里声明usingComponents项,或可在app.json这里全局开启
示例代码:app.json
{
  "debug": true,
  "darkmode": false,
  "pages": ["pages/main/Home/index", "pages/main/Mall/index", "pages/main/MyAccount/index"],
  "tabBar": {
    "custom": true,
    "color": "#000000",
    "selectedColor": "#000000",
    "backgroundColor": "#000000",
    "list": [
      {
        "pagePath": "pages/main/Home/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/main/MyAccount/index",
        "text": "我的"
      },
      {
        "pagePath": "pages/main/Mall/index",
        "text": "商城"
      }
    ]
  },
}
2. 添加tabBar代码文件
在代码根目录下,建立custome-tab-bar文件夹,添加入口文件如下:
custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss
注意:路由文件 routes.ts
`export const ROUTE_MALL = 'main/Mall';
 export const pageRoutes: Record<string, string> = {
 [ROUTE_HOME]: '/pages/main/Home/index',
 [ROUTE_MALL]: '/pages/main/Mall/index'
 };
export const tabBarPageRoutes: string[] = [
  ROUTE_HOME,
  ROUTE_MALL,
  ROUTE_MY_ACCOUNT,
];`
3. 编写tabBar代码
- 用自定义组件的方式编写即可,该自定义组件完全接管 tabBar 的渲染。
- 另外,自定义组件新增 getTabBar 接口,可获取当前页面下的自定义 tabBar 组件实例。

(每一个对应文件都可参考小程序开发者工具里的demo,这里主要提一下设置tabBar顺序的方法-通过getTabBar接口~)

3.1.为tab页面编写setTabBarIndex()

````
示例代码:utils/tab-bar.ts
    export const setTabBarIndex = (context: Context, index: number): void => {
      context.getTabBar().setData({
        selected: index,
      });
    };
    type Context =
    | WechatMiniprogram.Component.InstanceMethods<PageDataOption>
    | WechatMiniprogram.Component.InstanceMethods<ComponentDataOption>;
```` 
(由于项目中使用了TypeScript,这里贴上的相关的代码依赖只属于本项目且没有继续解释清楚)
 
 3.2.注意各tab的index.ts文件中设置其在tabBar的顺序,比如
     ````
    onShow() {
      setTabBarIndex(this, 1);
    },
    ````

参考资料developers.weixin.qq.com/miniprogram…