Skip to content

vant组件库

ts
官网:https://vant-ui.github.io/vant/#/zh-CN

基本使用

微信小程序可以使用js函数库。

node_modules依赖包不能直接使用需要工具->构建npm编程微信小程序的依赖才可以使用。

安装lodash

shell
# 安装lodash插件
npm install lodash

# 将npm包构建成小程序npm包
 工具-构建npm 中构建小程序包

# 在js文件中引入
import lodash from 'lodash'

安装vant

shell
文档:https://vant-ui.github.io/vant-weapp/#/quickstart

# 安装vant插件 小程序专用
npm i @vant/weapp -S --production

# 旧版本需要配置(旧版本)
vim project.config.json

# 将npm包构建成小程序npm包
 工具-构建npm 中构建小程序包

打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件

# 在json文件中引入组件注册
{
  "usingComponents": {},
  "navigationStyle":"custom",
  "usingComponents": {
        "van-button": "@vant/weapp/button/index",
        "van-divider": "@vant/weapp/divider/index",
        "van-empty": "@vant/weapp/empty/index"
   },
}

# 如果你使用 typescript 开发小程序,还需要做如下操作,以获得顺畅的开发体验。
安装 miniprogram-api-typings
通过 npm 安装
npm i -D miniprogram-api-typings

通过 yarn 安装
yarn add -D miniprogram-api-typings

# 在 tsconfig.json 中增加如下配置,以防止 tsc 编译报错


# 在wxml页面中使用组件
所有组件文档中的引入路径均以 npm 安装为例,如果你是通过下载源代码的方式使用 @vant/weapp,请将路径修改为项目中 @vant/weapp 所在的目录。

"usingComponents": {
  "van-button": "@vant/weapp/button/index"
}

vim project.config.json(老版本)

image-20241120112805291

shell
# 将 "./miniprogram" 改为 "./"

vim tsconfig.json

请将path/to/node_modules/@vant/weapp修改为项目的 node_modules 中 @vant/weapp 所在的目录。

ts
{
  ...
  "compilerOptions": {
    ...
    "baseUrl": ".",
    "types": ["miniprogram-api-typings"],
    "paths": {
      "@vant/weapp/*": ["path/to/node_modules/@vant/weapp/dist/*"]
    },
    "lib": ["ES6"]
  }
}

组件

勾选框组件

ts
vant组件绑定勾选框单击事件 bind:change="updateChecked",同时绑定自定义属性data-goodsId
定义updateChecked函数,
    获取勾选框的id,获取勾选框的勾选状态updateChecked(event){event.detail} 
	发送 修改商品勾选状态 请求
    再次获取购物车数据

stepper组件

ts
使用vant组件库stepper组件
封装 添加和修改购物车数量 接口api 参数[商品id,数量变化值,祝福语,token]
在stepper组件绑定单击事件 bind:change="updateCount",设置 自定义属性,用于获取 goodsId,使用bind:change事件的回调 event.detail 获取输入的新值newValue,设置 自定义属性,用于获取输入的旧值oldValue,使用新值-旧值得到差值(数量变化值)
发送请求,成功后,再次获取购物车的数据

sheet组件

从边缘弹窗组件

表单组件

ts
van-field组件:表单输入框

单元格组件

ts
van-cell组件:单元格,绑定单击事件, is-Link 属性,use-label-slot使用插槽

弹出层组件

ts
van-popup组件:弹出层,

日历选择卡

ts
van-datetime-picker组件:日历选项卡

单选组件

ts
收集标签 使用van-radio标签的name属性设置 "家""公司" 属性值,然后使用van-radio-group设置model:value属性双向绑定 {{tagname}} tagname 取值为 "家""公司"

微信小程序lodash

ts
优化:防抖和节流
防抖:回城(使用防抖效果),最后一次不操作了,等一段时间,才能触发
节流:技能cd,触发了一次后,需要等一段事件后才能,才能再次触发

微信小程序使用lodash的方法,小程序中没有window和dom,不能一下全部引入进来,否则会报错

ts
Uncaught TypeError: Cannot read property 'prototype' of undefined
https://www.02405.com/archives/7466
ts
安装独立的 lodash method package,如 lodash.get
npm install lodash.get lodash.debounce
import get from 'lodash.get'
修改lodash源码
找到 var root = freeGlobal || freeSelf || Function('return this')();
替换为
        var root = {
          Array: Array,
          Date: Date,
          Error: Error,
          Function: Function,
          Math: Math,
          Object: Object,
          RegExp: RegExp,
          String: String,
          TypeError: TypeError,
          setTimeout: setTimeout,
          clearTimeout: clearTimeout,
          setInterval: setInterval,
          clearInterval: clearInterval
        };

input修改购物车数量时,使用lodash,防抖
updateCount:debounce(function(){

})