Vue——移动端UI库之cube-ui

cube-ui是由滴滴内部组件库精简提炼而来,
基于Vue.js 实现的精致移动端组件库。

cube-ui官方地址:https://didi.github.io/cube-ui

在命令符提示窗口中输入以下命令:
npm install cube-ui -S

安装完成后,需要进行webpack的配置,
这一点与之前的UI库不太一样,比较繁琐一些,配置的官方文档:
https://didi.github.io/cube-ui/#/zh-CN/docs/quick-start

选择“普通编译”模式,注意官方文档的配置方案是针对Vue脚手架小于3版本,
我们使用的是Vue脚手架3以上版本,配置的内容是一样的,
只是配置的文件位置不太一样,

首先安装webpack-transform-modules-plugin插件,
在命令提示符窗口中输入以下命令:
npm install webpack-transform-modules-plugin -D




1.Toast轻提示组件
Toast组件官方文档:https://didi.github.io/cube-ui/#/zh-CN/docs/toast

2.Switch滑动开关
Switch组件官方文档:https://didi.github.io/cube-ui/#/zh-CN/docs/switch

3.ActionSheet操作列表
ActionSheet文档:https://didi.github.io/cube-ui/#/zh-CN/docs/action-sheet

4.CascadePicker组件
CascadePicker文档:https://didi.github.io/cube-ui/#/zh-CN/docs/cascade-picker
CascadePicker组件是级联选择器,用于实现多列选择之间的级联变化。
最常用的就是选择省、市、区。

此安装部分只针对于 vue-cli < 3 的情况

步骤1. NPM安装

$ npm install cube-ui --save

步骤2. 修改 package.json 并安装依赖

{
	  // webpack-transform-modules-plugin 依赖 transformModules
	  "transformModules": {
	    "cube-ui": {
	      "transform": "cube-ui/lib/${member}",
	      "kebabCase": true,
	      "style": {
	        "ignore": ["create-api", "better-scroll", "locale"]
	      }
	    }
	  },

	
	  "devDependencies": {
	    "webpack-transform-modules-plugin": "^0.4.3"
	  }


}

在这里插入图片描述

步骤3. 修改 webpack 配置 或 vue.config.js配置

在这里插入图片描述

1. 移动端UI库之cube-ui的Toast轻提示组件

1. 什么是 Toast?

Toast 是一种轻量级的提示组件,通常用于向用户展示简短的信息(如操作成功或失败的提示)。它会自动消失,不会阻塞用户的操作。

(1)引入 Toast 组件

在这里插入图片描述
注意事项:
如果你只在某个页面中使用 Toast,可以直接通过 this.$createToast 调用,而无需注册为全局组件。

2. 基本用法

以下是 Cube-UI 中 Toast 的基本用法:
在这里插入图片描述
Cube-UI 中 Toast 的参数说明:

1. txt :提示内容,可以是字符串或 HTML 片段。
2. time :提示框显示的时间(单位:毫秒),默认为 2000 毫秒。如果设置为 0,则不会自动关闭。
3. type :提示框的类型(可选值:txt、loading、correct、forbidden 等)。
4. $events :事件监听器,支持绑定自定义事件(如 timeout)。

3. 在 submit 方法中使用 Toast

methods: {
  submit() {
    if (this.ruleForm.cellphone.trim() === "") {
    
 <!-----------------Toast组件----------------------------->   
      this.$createToast({
        txt: "请输入手机号", // 提示内容
        time: 2000, // 显示时长
        type: "txt", // 提示类型
        $events: {
          timeout: () => {
            console.log("提示已超时");
          },
        },
      }).show();
 <!-----------------Toast组件----------------------------->   
 

      return;
    }
    if (this.ruleForm.password.trim() === "") {
    
  <!-----------------Toast组件----------------------------->     
      this.$createToast({
        txt: "请输入密码", // 提示内容
        time: 2000, // 显示时长
        type: "txt", // 提示类型
        $events: {
          timeout: () => {
            console.log("提示已超时");
          },
        },
      }).show();
 <!-----------------Toast组件-----------------------------> 
 
      return;
    }

    // 如果表单验证通过,执行其他逻辑
    console.log("表单提交成功!");
  },
}

使用说明:

1. 当用户未输入手机号或密码时,通过 this.$createToast 显示提示信息。

2. time 设置为 2000 毫秒(即 2 秒),提示信息会在 2 秒后自动消失。

3. $events.timeout 用于监听提示框超时事件。
当 Toast 的显示时间(time)结束时,会触发 timeout 事件。
在 timeout 回调函数中,你可以执行任何需要的操作,比如记录日志或更新状态。

1. $events 是可选的:如果你只需要简单的提示功能,可以直接使用 txt 和 time 配置项,而无需关心 $events。

2. $events 的作用:通过 $events,你可以监听 Toast 的生命周期事件(如 timeout),并在事件触发时执行自定义逻辑。

使用场景:当需要对 Toast 的显示和隐藏进行更精细的控制时,可以使用 $events。

4 不同类型的 Toast

Cube-UI 的 Toast 支持多种类型,可以通过 type 属性指定。

// 文本提示
this.$createToast({
  txt: "这是一个文本提示",
  type: "txt",
  time: 2000,
}).show();

// 加载提示
this.$createToast({
  txt: "加载中...",
  type: "loading",
  time: 0, // 不自动关闭
}).show();

// 成功提示
this.$createToast({
  txt: "操作成功",
  type: "correct",
  time: 2000,
}).show();

// 错误提示
this.$createToast({
  txt: "操作失败",
  type: "forbidden",
  time: 2000,
}).show();

在这里插入图片描述

5. 常用属性

以下是 Cube-UI 的 Toast 组件的常用属性及其作用:
在这里插入图片描述

==================================================

2. 移动端UI库之cube-ui的Switch滑动开关

1. 什么是 Switch?

Switch 是一种开关组件,通常用于在两种状态之间切换(如开启或关闭某种功能)。它的特点是操作直观,用户只需点击即可完成状态切换。
(1)引入 Switch 组件
在这里插入图片描述
注意事项:
如果你只在某个页面中使用 Switch,可以直接通过 标签使用,而无需注册为全局组件。

2. 基本用法

以下是 Cube-UI 中 Switch 的基本用法:
在这里插入图片描述
参数说明:

1. v-model :绑定一个布尔值(true 或 false),表示开关的状态。
2. 内容:Switch 组件本身没有默认的文字内容,
如果需要显示文字,可以在标签内添加自定义文本

在这里插入图片描述

==================================================

3. 移动端UI库之cube-ui的ActionSheet操作列表

<div>
  <span @click="showCubeActionSheet">{{gender?gender:"请选择"}}</span>
</div>

<script>
import Vue from 'vue';

import {ActionSheet } from 'cube-ui';//移动端UI库之cube-ui
Vue.use(ActionSheet )

export default{
  name:'name-reg',
  data(){
    return{
         gender:"",
        
    }
  },

methods:{

 showCubeActionSheet(){
      this.$createActionSheet({
        title: '请选择性别',
        data: [ { content: '男'},{content: '女'} ],
        onSelect: (item, index) => {
          console.log(item,index)
          this.gender=item.content
        }
      }).show()
    }

}
   

  
}
</script>

在这里插入图片描述

​​创建 ActionSheet​​:

使用 this.$createActionSheet(options) 创建 ActionSheet
这个方法返回一个 ActionSheet 实例,需要调用 show() 方法才会显示

​​配置项(options)​​:

1. title (String): 操作列表顶部的标题

2. data (Array): 操作列表的数据源,每个元素是对象,包含:
				content (String): 显示的文本内容	其他可选属性(如 disabled, style 等)
				
3. onSelect (Function): 选择选项时的回调函数,参数:
			item (Object): 当前选中的选项对象
			index (Number): 当前选中项的索引

​​显示方法​​:

必须调用 .show() 方法才会显示操作列表

在这里插入图片描述

4. 移动端UI库之cube-ui的CascadePicker组件

1. 模板部分(Template)

<template>
  <div>
   
      选择地区
      <span @click="selectArea">{{ area ? area : "请选择" }}</span>
   
  </div>
</template>
在页面上展示一个文本“选择地区”,后面跟一个span元素,
用于显示已选择的地区或提示“请选择”。

当用户点击这个span时,触发selectArea方法,弹出地区选择器。

2. 脚本部分(Script)

导入依赖
import Vue from "vue"
import { CascadePicker } from "cube-ui"
Vue.use(CascadePicker)
import { provinceList, cityList, areaList } from
 '../../assets/js/data/cube-data/area'
 
导入Vue、Cube-UI的CascadePicker组件,并在Vue中使用该组件。

从本地文件导入省市区数据
(三个数组:省列表provinceList、城市字典cityList、区域字典areaList)。
整合数据为级联结构
const addressData = provinceList
addressData.forEach(province => {
  province.children = cityList[province.value]
  province.children.forEach(city => {
    city.children = areaList[city.value]
  })
})
console.log(addressData);

将省列表作为顶级数据addressData。

遍历每个省,根据省的value从cityList中取出该省对应的城市数组,
作为省的children。

再遍历每个城市,根据城市的value从areaList中取出该城市对应的区域数组,
作为城市的children。

这样,我们就构建了一个三级的树形结构:省 ->-> 区。
组件定义
export default {
  name: "area-list",
  data() {
    return {
      area: "", // 存储选中的地区字符串(例如“广东省 广州市 天河区”)
      areaIndex: [0, 0, 0] // 记录当前选中的索引,用于设置级联选择器的默认选中项
    }
  },
  methods: {
    selectArea() {
      this.$createCascadePicker({
        title: '请选择地区', // 标题
        data: addressData, // 上面整合好的级联数据
        selectedIndex: this.areaIndex, // 设置默认选中项
        onSelect: (selectedVal, selectedIndex, selectedText) => {
          // 当用户选择后的回调
          // selectedVal: 每一级选中的值(value)组成的数组
          // selectedIndex: 每一级选中的索引组成的数组
          // selectedText: 每一级选中的文本(text)组成的数组
          console.log(selectedVal, selectedIndex, selectedText)
          // 将选择的文本数组用空格连接,赋值给area
          this.area = selectedText.join(" ")
          // 保存索引,以便下次打开时保持上一次的选中位置
          this.areaIndex = selectedIndex;
        },
        onCancel: () => { console.log("取消") } // 取消选择的回调
      }).show() // 显示选择器
    }
  }
}

3. 工作原理

​​(1) 数据整合​​:我们首先将分开的省、市、区数据**组合成一个三级联动的数据结构。**每个省对象添加children属性,其值为该省下的城市数组;每个城市对象再添加children属性,其值为该城市下的区域数组。这样就形成了一个嵌套的树形结构。

(2)打开选择器​​:当用户点击span时,调用selectArea方法,使用this.$createCascadePicker创建并显示级联选择器。

​​(3)设置默认选中​​:通过selectedIndex属性设置选择器的默认选中项,初始为[0,0,0](即第一级的第一个、第二级的第一个、第三级的第一个)。当用户选择后,我们会保存选中的索引,下次打开时就会定位到上次选中的位置。

(4)​​选择完成​​:用户滑动选择每一级,点击确定后触发onSelect回调。在回调中,我们将选中的文本数组(如[‘广东省’,‘广州市’,‘天河区’])用空格连接成字符串(“广东省 广州市 天河区”)并保存。同时保存选中的索引(areaIndex)。

(5)​​取消选择​​:用户点击取消时,触发onCancel回调,这里只打印了日志。

4. 注意事项

数据整合是关键:必须确保省市区数据的正确关联。cityList是一个以省的值(province.value)为键的对象,每个键对应的值是城市数组。areaList同理,以城市的值(city.value)为键。

索引(areaIndex)的保存是为了记住用户的上一次选择,这样下次打开选择器时可以直接定位到上次选中的位置。

selectedText是用户看到的文本数组,而selectedVal是实际的值(value)数组。在这个例子中,我们只需要显示文本,所以用了selectedText。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值