1.构建npm,安装Vant weapp:
1)根目录下 ,初始化生成依赖文件package.json
npm init -y
2)安装vant
# 通过 npm 安装
npm i @vant/weapp -S --production
3)修改 package.json 文件
开发者工具创建的项目,miniprogramRoot 默认为 miniprogram,package.json 在其外部,npm 构建无法正常工作。
需要手动在 project.config.json 内添加如下配置,使开发者工具可以正确索引到 npm 依赖的位置(修改miniprogramNpmDistDir的路径)。
{
...
"setting": {
...
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "./package.json",
"miniprogramNpmDistDir": "./miniprogram/"
}
]
}
}
***注意***:
由于目前新版开发者工具创建的小程序目录文件结构问题,npm构建的文件目录为miniprogram_npm,并且开发工具会默认在当前目录下创建miniprogram_npm的文件名,所以新版本的miniprogramNpmDistDir配置为 ‘./’ 即可。
4)构建npm包:点击左上角工具--->构建npm--->显示构建完成
2. 测试引入和使用vant组件
1)引入:
// 通过 npm 安装的vant
// 在app.json
"usingComponents": {
"van-button": "@vant/weapp/button/index"
}
2)使用:
// 在wxml中:
<van-button type="primary">按钮</van-button>
3. 自定义tabBar配置:
1)在app.json 以下代码添加对应文件
{
"pages": [
"custom-tab-bar/index",
"pages/home/home",
"pages/topic/topic",
"pages/category/category",
"pages/cart/cart",
"pages/user/user"
],
}
2)注意第1点生成的tabBar 代码文件custom-tab-bar是在根目录下的,生成了以下文件
custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss
3)在app.json配置tabBar信息
- 在
app.json
中的tabBar
项指定custom
字段为true,同时其余tabBar
相关配置也补充完整。 - 所有 tab 页的 json 里需声明
usingComponents
项,也可以在app.json
全局开启。 - 这里的pagePath值前面没有“/”。
"tabBar": {
"custom": true,
"list": [{
"pagePath": "pages/home/home",
"text": "首页"
},{
"pagePath": "pages/topic/topic",
"text": "专题"
},{
"pagePath": "pages/category/category",
"text": "分类"
},{
"pagePath": "pages/cart/cart",
"text": "购物车"
},{
"pagePath": "pages/user/user",
"text": "我的"
}]
},
"usingComponents": {}
4) 配置active为活动的tab的索引,默认为0则显示首页,iconPath即为vant中的图标,text是文字,path对应路径值,记得前面有“/”。
// custom-tab-bar/index.js
Component({
data: {
active: 0,
list: [
{
iconPath: "home-o",
text: "首页",
path: "/pages/home/home"
},
{
iconPath: "label-o",
text: "专题",
path: "/pages/topic/topic"
},
{
iconPath: "apps-o",
text: "分类",
path: "/pages/category/category"
},
{
iconPath: "cart-o",
text: "购物车",
path: "/pages/cart/cart"
},
{
iconPath: "user-o",
text: "我的",
path: "/pages/user/user"
}
]
},
methods: {
onChange(event) {
// event.detail 的值为当前选中项的索引
wx.switchTab({
url: this.data.list[event.detail].path
});
},
}
})
5)引入组件
// custom-tab-bar/index.json
{
"usingComponents": {
"van-tabbar": "@vant/weapp/tabbar/index",
"van-tabbar-item": "@vant/weapp/tabbar-item/index"
}
}
6)页面结构
// custom-tab-bar/index.wxml
<van-tabbar class="tab-bar" active="{{ active }}" bind:change="onChange" active-color="darkred" inactive-color="#333">
<block wx:for="{{list}}" wx:key="index">
<van-tabbar-item icon="{{item.iconPath}}">{{item.text}}</van-tabbar-item>
</block>
</van-tabbar>
7) 动态修改tab样式
在每个子页面修改active的值,来动态修改tabBar选中样式
例如在cart.js中active改为3,即在页面中显示的索引为3
页面效果:
记得每个子页面都要改!!!
完成了。