Vue——移动端UI库之vant

Vant是有赞开源的一套基于Vue 2.0的移动端的组件库。
官方地址:https://develop365.gitlab.io/vant/zh-CN/home/

1.Toast轻提示
Toast官方文档:https://vant-contrib.gitee.io/vant/#/zh-CN/toast
2.Switch开关
Switch官方文档:https://vant-contrib.gitee.io/vant/#/zh-CN/switch
3.Dialog弹出框
Dialog官方文档:https://vant-contrib.gitee.io/vant/#/zh-CN/dialog
4.Area省市区选择
Area官方文档:https://vant-contrib.gitee.io/vant/#/zh-CN/area
省市区三级联动选择,通常与弹出层组件配合使用。
弹出层官方文档:https://vant-contrib.gitee.io/vant/#/zh-CN/popup
首先需要下载省市区的数据源,下载地址:https://github.com/youzan/vant/blob/dev/src/area/demo/area.js

第一步:

使用 Vant 时,可以通过 npm 进行安装:
npm i vant@latest-v2 -S

第二步:

按需引入你所需要的组件安装babel插件
npm i babel-plugin-import -D

第三步配置按需引入,在babel.config.js文件中加入下面代码

在这里插入图片描述

1.Toast轻提示

引入Toast组件

import { Toast } from 'vant';
Vue.use(Toast);

Toast(“请输入手机号”)
效果演示
在这里插入图片描述
Toast.success(“请输入手机号”)
效果演示
在这里插入图片描述
vantToast.fail(“请输入手机号”)
效果演示
在这里插入图片描述
在这里插入图片描述

2.Switch开关

<!-- 开关 -->
 <van-switch 
			 v-model="isOpin" 
				 size="60px"
 				 active-color="red" 
 			 inactive-color="blue"  >

开关

</van-switch>

定义开关的相关状态

在这里插入图片描述

3.Dialog弹出框

1. Vant UI 的 Dialog 组件简介

Dialog 是一个弹出框组件,用于在页面上显示提示信息、确认操作等。它支持多种类型(如普通对话框、确认框、自定义内容等),并且可以通过 Promise 的方式处理用户操作(如点击确认或取消按钮)。

2. 基本用法
引入 Dialog 组件
在 Vue 项目中,可以通过以下方式引入 Dialog 组件:

import { Dialog } from 'vant';
Vue.use(Dialog);

在这里插入图片描述

1. Dialog.alert方法使用

在这里插入图片描述
在这里插入图片描述

2. Dialog.confirm方法使用

在这里插入图片描述
在这里插入图片描述

3. Dialog 组件提供了丰富的配置选项,以下是一些常用的配置:


基本配置

1. title:对话框标题,默认值为 ''。
2. message:对话框内容,可以是字符串或 HTML。
3. theme:按钮主题,可选值为 default 或 round-button。
4. showCancelButton:是否显示取消按钮,默认值为 false。
5. showConfirmButton:是否显示确认按钮,默认值为 true。
6. confirmButtonText:确认按钮的文本,默认值为 '确认'。
7. cancelButtonText:取消按钮的文本,默认值为 '取消'。

自定义样式

1. className:自定义类名,用于添加额外的样式。
2. overlayClass:遮罩层的自定义类名。
3. overlayStyle:遮罩层的自定义样式。

回调函数

1. beforeClose:在关闭对话框之前触发的回调函数,可以用于阻止关闭。
2. onOpened:对话框完全打开时触发的回调函数。
3. onClosed:对话框完全关闭时触发的回调函数。

4. 自定义内容

如果需要显示更复杂的内容(如表单、图片等),可以使用 Dialog.open 方法,并传入一个 Vue 组件作为内容。

Dialog.open({
  title: '自定义内容',
  message: '<div>这里是自定义的 HTML 内容</div>',
  theme: 'round-button',
  showConfirmButton: true,
  showCancelButton: true,
  confirmButtonText: '确定',
  cancelButtonText: '取消',
  confirmButtonColor: '#007aff',
  cancelButtonColor: '#999',
  className: 'custom-dialog',
  overlayClass: 'custom-overlay',
  overlayStyle: {
    backgroundColor: 'rgba(0, 0, 0, 0.5)'
  },
  beforeClose(action, done) {
    if (action === 'confirm') {
      // 确认操作
      console.log('确认操作');
      done(); // 关闭对话框
    } else {
      // 取消操作
      console.log('取消操作');
      done(); // 关闭对话框
    }
  },
  onOpened() {
    console.log('对话框已完全打开');
  },
  onClosed() {
    console.log('对话框已完全关闭');
  }
});

样式覆盖:可以通过 className 或 overlayClass 添加自定义样式,也可以通过全局样式覆盖默认样式。

4.Area省市区选择

van-area 组件简介:
van-area 是一个级联选择器,专门用于选择省市区(或省市区县)信息。它支持多级联动选择,并且可以通过事件回调获取用户选择的结果。

<template>
  <div>
    <div>
      请选择地区:<span @click="isPopup=true">{{area ? area : "请选择"}}</span>
    </div>

    <van-popup v-model="isPopup">
    
      <van-area
        title="选择地区1:"
        :area-list="areaList"
        @cancel="isPopup=false"
        @confirm="vantSelectArea"
      />
      
    </van-popup>
  </div>
</template>

<span @click=“isPopup=true”>:点击时将 isPopup 设置为 true,从而触发弹出层显示。

{{area ? area : “请选择”}}:显示当前选择的地区信息,如果没有选择则显示“请选择”。

< van-popup v-model=“isPopup”>:弹出层组件,v-model 绑定的 isPopup 控制弹出层的显示与隐藏。

< van-area>:省市区选择组件。

1. title="选择地区1:":设置标题。

2. :area-list="areaList":绑定地区数据,areaList 是一个包含省市区数据的对象。
3. @cancel="isPopup=false":点击取消按钮时,关闭弹出层。

4. @confirm="vantSelectArea":点击确认按钮时,触发 vantSelectArea 方法。
data() {
  return {
    area: "", // 当前选择的地区
    areaList: AreaList, // 地区数据
    isPopup: false // 控制弹出层的显示与隐藏
  };
},

methods: {
  vantSelectArea(vals) {
    console.log(vals);
    if (vals.length > 0) {
      this.area = "";
      for (let i = 0; i < vals.length; i++) {
        this.area += "" + vals[i].name;
      }
      this.area = this.area.slice(1); // 去掉第一个字符(多余的空格)
      console.log(this.area);
      this.isPopup = false; // 关闭弹出层
    }
  }
}


vantSelectArea(vals):这是 van-area 组件的 @confirm 事件的回调函数,当用户点击确认按钮时触发。

1. vals:用户选择的地区信息数组。

2. if (vals.length > 0):确保用户有选择的地区信息。

3. this.area = "":初始化 area,清空之前的值。

4. for (let i = 0; i < vals.length; i++):遍历 vals 数组,将每个地区的名称拼接到 this.area 中。

5. this.area += "" + vals[i].name:将每个地区的名称拼接起来。这里使用了 "" + 来确保拼接的是字符串。

6. this.area = this.area.slice(1):去掉第一个字符(多余的空格)。因为拼接时会多出一个空格,所以需要去掉。

7. console.log(this.area):在控制台打印最终选择的地区名称。

8. this.isPopup = false:关闭弹出层。

代码优化

methods: {
  vantSelectArea(vals) {
    if (vals.length > 0) {
      this.area = vals.map(val => val.name).join(" "); // 使用 map 和 join 拼接字符串
      console.log(this.area);
      this.isPopup = false; // 关闭弹出层
    }
  }
}
### 关于Vue3移动端旅游打卡功能的实现 对于构建一个基于Vue3的移动应用,特别是针对旅游打卡的功能模块,可以从多个方面考虑技术选型以及具体实现方式。考虑到移动端UI框架的选择,在提到的一些中,`vant` 和 `mint-ui` 是两个非常流行且适合用于开发高效美观界面的选择[^1]。 #### 使用Vant组件搭建基础页面布局 为了快速启动项目并保持良好的用户体验设计,推荐采用 Vant 组件作为主要的设计工具包。该提供了丰富的预设样式和交互效果,能够极大地简化前端开发者的工作量。例如: ```html <template> <van-tabbar v-model="active"> <van-tabbar-item icon="home-o">首页</van-tabbar-item> <van-tabbar-item icon="search-o">发现</van-tabbar-item> <van-tabbar-item icon="friends-o">我的行程</van-tabbar-item> </van-tabbar> </template> <script setup lang="ts"> import { ref } from 'vue'; const active = ref(0); </script> ``` 这段代码展示了如何利用 Vant 创建底部导航栏,这对于旅游类应用程序来说是非常实用的基础构件之一。 #### 实现位置服务集成与地图展示 为了让用户能够在旅行过程中方便地标记自己的地理位置,通常需要接入第三方的地图API(如百度地图、高德地图)。通过这些平台提供的SDK可以直接获取当前位置坐标,并将其显示在一个直观易懂的地图界面上。此外还可以加入兴趣点搜索等功能提升整体体验感。 #### 自定义Hooks优化业务逻辑处理 当涉及到更复杂的场景比如上传照片到服务器保存为打卡记录时,则可以借助 Vue3 中的新特性——组合式 API 来编写自定义 Hooks 函数[^2]。这种方式不仅有助于提高代码质量还便于后期维护扩展。下面是一个简单的例子说明怎样封装图片选择器插件并与后端通信完成数据提交操作: ```javascript // useImageUpload.ts export function useImageUpload() { const uploadFile = async (file: File) => { try { let formData = new FormData(); formData.append('image', file); await fetch('/api/upload-image', { method: 'POST', body: formData, }); console.log('文件已成功上载'); } catch (error) { console.error(error.message); } }; return { uploadFile }; } ``` 以上就是有关使用 Vue3 构建移动版旅游打卡应用的一些建议和技术要点介绍。当然实际开发过程可能会遇到更多挑战,建议持续关注官方文档更新以及其他社区贡献者的实践经验分享以获得最新最全的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值