目录

  • 一、介绍
  • 二、引入
    • 1、安装vant
    • 2、引入
  • 三、使用

一、介绍

  Vant 是有赞前端团队开源的移动端组件库,于 2017 年开源,已持续维护 4 年时间。Vant 对内承载了有赞所有核心业务,对外服务十多万开发者,是业界主流的移动端组件库之一。目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本。
  地区层级选择组件属于比较复杂的业务组件,使用vant地区选择组件同时,可以对组件样式进行修改,以满足个人业务要求。

二、引入

1、安装vant

使用npm i vant即可安装vant最新版本:

npm i vant

安装完毕之后可以选择按需引入组件或者全局引入vant组件,这里我们选择按需引入。

2、引入

  1. 引入插件

  babel-plugin-import 是一款 babel 插件,它会在编译过程中将 import 的写法自动转换为按需引入的方式。引入方法如下:

npm i babel-plugin-import -D
  1. 添加babel的配置
    使用babel配置不会出现组件样式无法加载问题,否则则需要按需引入组件样式文件。
// 在.babelrc 中添加配置
// 注意:webpack 1 无需设置 libraryDirectory
{"plugins": [["import", {"libraryName": "vant","libraryDirectory": "es","style": true}]]
}// 对于使用 babel7 的用户,可以在 babel.config.js 中配置
module.exports = {plugins: [['import', {libraryName: 'vant',libraryDirectory: 'es',style: true}, 'vant']]
};
  1. 导入组件

  通常使用地区选择组件,需要搭配底部弹出组件Popup一起使用,引入两个vant组件:

import AreaList from '@/assets/js/area.js'
import Vue from 'vue';
import { Area, Popup } from 'vant';
Vue.use(Area);
Vue.use(Popup);

其中,引入的AreaList包含了所有的地区的地区代码,文件地址为:https://download.csdn.net/download/m0_46309087/14001917。

三、使用

  引入Area, Popup两个组件以后,通过阅读两个组件API文档使用这两个组件,以下是两个组件api文档,这里api接口较多,我们仅选择我们需要的几个api做说明:

  • popup
参数 说明 类型 默认值
v-model (value) 是否显示弹出层 boolean false
position 弹出位置,可选值为 top bottom right left string center
  • Area
事件 说明 回调参数
confirm 点击右上方完成按钮 一个数组参数
cancel 点击取消按钮时 -

对于area组件,以上两个事件对应的是确认和取消两个按钮的事件,其他的api详见VantDOC;

地区组件最关键的就是入参与出参,入参数据格式为:

{province_list: {110000: '北京市',120000: '天津市'},city_list: {110100: '北京市',110200: '县',120100: '天津市',120200: '县'},county_list: {110101: '东城区',110102: '西城区',110105: '朝阳区',110106: '丰台区'120101: '和平区',120102: '河东区',120103: '河西区',120104: '南开区',120105: '河北区',// ....}
}

完整的数据见https://download.csdn.net/download/m0_46309087/14001917。

选择完毕点击确定按钮,confirm事件获取参数,出参数据格式为:

//返回的数据整体为一个数组,数组内包含 columnsNum 个数据, 每个数据对应一列选项中被选中的数据。//code 代表被选中的地区编码, name 代表被选中的地区名称[{code: '110000',name: '北京市',},{code: '110100',name: '北京市',},{code: '110101',name: '东城区',},
];

实现的效果如下图:
完整代码如下:

<template><div><div class="flex-input"><div class="tx-lable">{{ itemName }}</div><div class="tx-input" @click="areaChoose"><inputtype="text":placeholder="phdText"v-model="chooseValue"readonly/><img src="@/assets/images/toRight.png" /></div></div><DLine v-show="showUnderline"></DLine><van-popup v-model="showAddrPopup" position="bottom"><van-areatitle="选择地区":area-list="areaList"@cancel="showAddrPopup = false"@confirm="confArea"@visible-item-count="itemCount"/></van-popup></div>
</template>
<script>
import DLine from "@/components/DLine";
import AreaList from "@/assets/js/area.js";
import Vue from "vue";
import { Area, Popup } from "vant";
Vue.use(Area);
Vue.use(Popup);
export default {props: {itemName: {type: String, //按钮名称default: "地区"},phdText: {type: String, //按钮名称default: "请选择地区"},showUnderline: {type: Boolean,default: true}},components: {DLine},data() {return {areaList: {}, //省市区列表itemCount: 7,showAddrPopup: false, //弹出层展示chooseValue: ""};},created() {this.initParams();},methods: {clickhandle() {//使用emit,第一个参数为子组件组件方法,第二个参数为该方法传递的参数this.$emit("clickhandle", 5);},initParams() {this.areaList = AreaList;},areaChoose() {this.showAddrPopup = true;},confArea(data) {// this.chooseArea = data;for(let i = 0; i<data.length; i++) {this.chooseValue = data[i].name + this.chooseValue;}}}
};
</script>
<style lang="scss" scoped>
.flex-input {display: flex;justify-content: space-between;background-color: #ffffff;height: 56px;padding: 0 25px;div {font-size: 16px;color: #2e042c;letter-spacing: 0;}
}
.tx-lable {margin: 16px 0;height: 24px;line-height: 24px;vertical-align: -webkit-baseline-middle;
}
.tx-input {display: flex;justify-content: flex-end;margin: 16px 0;line-height: 24px;input {border: none;margin-right: 5px;text-align: right;}input::-moz-placeholder {color: #f6e9f7;}img {margin: 7px 5px;height: 12px;width: 12px;}
}
</style>

vant area地区选择组件使用方法相关推荐

  1. html5地区级联选择,【JS】vue+vant移动端地区级联选择组件

    首页 专栏 javascript 文章详情 0 vue+vant移动端地区级联选择组件 quanta发布于 今天 08:25 写在开头:项目的框架是vue+vant,业务需求一个级联的地区选择,写完才 ...

  2. vant 索引城市不对_Vant Area 省市区选择

    介绍 省市区三级联动选择,通常与 弹出层 组件配合使用 引入import Vue from 'vue'; import { Area } from 'vant'; Vue.use(Area); 代码演 ...

  3. vant 引进单个样式_vue 公共列表选择组件,引用Vant-UI的样式方式

    此组件用于公共选择组件.引用Vant UI 作为样式 特性: 1.支持动态.静态数据源. 2.支持分页加载. 3.支持模糊搜索. 4.支持单选.多选. 组件源码: 确认 v-model="l ...

  4. WPF地区选择控件(内附下载地址)

    最近使用WPF做了一个地区选择控件,可以提供省.市.地区.县等名称的快速录入.查询使用的是Lucene组件(主要是想体验一下牛刀杀鸡) 功能列表: 支持汉字.全拼.简拼的快速搜索 支持光标键和鼠标滚轮 ...

  5. Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下

    Vant ( \ˈvænt\ ) 是有赞前端团队基于有赞统一的规范实现的 Vue 组件库,提供了一整套 UI 基础组件和业务组件.通过 Vant,可以快速搭建出风格统一的页面,提升开发效率.目前已有近 ...

  6. 微信小程序地址选择组件(仿拼多多App版地址选择)

    先上效果图 这是一个地址选择组件    点击选择地址  启动组件选择完成  返回组件中选择的地址 首先先写组件代码   getAddress.js var city = require('../../ ...

  7. vant d的地址组件中文操作手册

    vant d的 学习手册.中文操作文档 开发指南 快速上手 基础组件 Empty 空状态 业务组件 地址列表 地址编辑 Area 省市区选择 Card 卡片 Contact 联系人 Coupon 优惠 ...

  8. vue移动端地区选择练习

    写的比较小白,效果简单.仅供和我一样学习中的同学一起探讨.以后会继续加油.目前没有封装组件.等我写的足够好了我再封装. 先附上html代码 <!DOCTYPE html> <html ...

  9. vue移动端地区选择练习1

    写的比较小白,效果简单.仅供和我一样学习中的同学一起探讨.以后会继续加油.目前没有封装组件.等我写的足够好了我再封装. 先附上html代码 <!DOCTYPE html> <html ...

  10. vant框架上传组件---上传身份证两面图片需求并且压缩图片质量,非压缩长宽——商城项目

    场景 1.vant框架上传组件-上传身份证两面图片需求并且压缩图片质量,非压缩长宽--商城项目 2.压缩图片质量大小-- 3.压缩逻辑因为是正反两面单独压缩执行,所以我这里使用 Promise.all ...

最新文章

  1. R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩、离散色彩、梯度色彩)实战(density plot)
  2. 手把手带你画一个漂亮蜂窝view Android自定义view
  3. pytorch 构建神经网络模型总结
  4. QDir类cleanPath函数用法
  5. 实例29:python
  6. Leetcode--78. 子集
  7. 2019C语言程序设计大赛,2019年全国高校计算机能力挑战赛 C语言程序设计决赛
  8. python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合
  9. 所以進入到二十一世紀之後
  10. 2021 前端面试经常被问到 Javascript+HTML5+CSS+ 框架问题(89 篇资料总结)
  11. 统计一个子字符串在另一个字符串中出现的次数
  12. linux php adodb,【原创】Linux下php使用adodb对sql Server访问配置
  13. 单片机炫彩灯实训报告_单片机实验报告——流水灯
  14. 无蓝光护眼台灯哪个牌子好?盘点几款无蓝光无频闪的护眼台灯
  15. Linux中合并多个Pdf文件(使用pdfunite,合并比较简单)
  16. 计算机换系统后word丢失怎么办,Word文件丢失如何找回?教你解决文件丢失的难题...
  17. STM32 GD32 CAN调试调试调试
  18. 9款免费的Windows远程协助软件
  19. IOS 应用内支付(IAP)接口使用说明
  20. 使用Vagrant快速创建linux虚拟机

热门文章

  1. 央视国际节目定价发布接口规范C2
  2. MTK6577 编译报错
  3. 阿里云OSS上传图片、PDF设置链接预览
  4. 从google code上clone代码出现 couldn't resolve proxy '(null)' while accessing 的解决方法(2012/12/06)
  5. 关于SQLite创建视图
  6. DeskSpace-适用于Vista的类似Beryl的3D多维数据集虚拟桌面管理器
  7. JTAG/JLINK
  8. 如何升级 Win10 系统
  9. 如何修改Windows(可移植)桌面文件夹图标
  10. 湖中剑 GitHub周刊 #10 | 开源监控uptime-kuma、LVGL嵌入式UI、node版本管理nvm