# myCompont **Repository Path**: chen1142399899/my-compont ## Basic Information - **Project Name**: myCompont - **Description**: myCompont vue3 ts uniapp 通用组件库 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # myCompont 组件说明 > 一款支持vue3 ts 的uniapp常用组件库,免费试用、主要是作者工作中使用然后收集慢慢完善,有问题qun 1044861125 共同学习 完善该组件 # 使用方法 ``` 把 m-component 复制到\components目录下 pages.json中配置 "easycom": { // 基础/业务组件全局自动注册(保持原使用方式) // "autoscan": true "autoscan": true, "custom": { "^m-(.*)$": "@/components/m-compont/m-$1/m-$1.vue" } }, ``` ## 组件目录 ``` m-button 按钮 m-checkbox 多选组件 m-city-selector 城市选择 m-code 验证码 m-countdown 定时获取验证码 m-downlist 搜索框 m-form 表单组件 m-form-item 表单项组件 m-icon icon组件 m-images 图片组件 m-list 数据列表 m-loading 加载中 m-login 快捷登录 m-navbar 自定义导航 m-number-box 数字输入框 m-picker 选择弹出 m-popup 弹出框 m-rating 评分 m-skeleton 骨架 m-swiper 轮播图 m-swiper-item m-tabbar 自定义底部菜单 m-toast 消息提示 m-uploadimg 图片上传组件 m-video 视频显示组件 m-waterfall 瀑布流组件 ``` # 组件使用 ## m-button > 按钮组件 ``` showText: { type: Boolean, // 是否显示按钮文字 default: true }, type:{ type: String, default: "text"}, fontSize: { type: String, default: "24rpx" }, openType: { type: String, //调用小程序原生使用 default: "" }, btnStyle: { type: Object, //按钮样式 default: () => ({}) }, color: { type: String, //文字颜色 default: "#fff" }, text: { type: String, //文本内容 default: '确定' }, click: { type: Function, //点击事件 default: null } 分享 ``` ## m-checkbox > 复选按钮 ``` * @param activeColor 选中的背景颜色 * @param inactiveColor 未选中的背景颜色 * @param iconColor 图标颜色 * @param direction 选择框和文本的布局方向 * @param size 选择框的大小 * @param gap 选择框和文本的间距 * @param activeValue 选中的值 * @param inactiveValue 未选中的值 modelValue: any shape?: 'circle' | 'square' | 'round' direction?: 'left' | 'right' | 'top' | 'bottom' size?: number /** 选中的背景颜色 */ activeColor?: string /** 未选中的时候颜色 border颜色 */ inactiveColor?: string /** 图标颜色*/ iconColor?: string gap?: number /**自定义选中值*/ activeValue?: any // ✅ 自定义选中值 /** 自定义未选中值*/ inactiveValue?: any // ✅ 自定义未选中值 ``` ## m-city-selector > 城市选择 城市选择插件,城市数据在city.ts中,可以自行更新,选择城市后给父组件返回选中城市数据。支持城市搜索 ``` 详情 https://ext.dcloud.net.cn/plugin?id=24847 ``` ## m-code > 输入验证码 ``` /** * 双向绑定的值 */ modelValue?: string | number /** * 验证码长度 * @default 4 */ length?: number /** * 输入框边框颜色(选中时) * @default '#9666FF' */ borderColor?: string /** * 文字颜色 * @default '#333' */ textColor?: string /** * 文字大小,单位 rpx * @default 36 */ textSize?: number | string /** * 每个格子的宽高,单位 rpx * @default 90 */ size?: number | string ``` ## m-countdown > 获取手机验证码倒计时 ``` duration onStart 开始 getCode 点击 获取验证码 onEnd 结束 ``` ## m-downlist ``` items: Record[] 数据类型 selectedId?: string | number | null 选择中的 valueKey?: string 数据的KEY labelKey?: string lbae key字段 multiple?: boolean 是否多选 ``` ## m-form > 表单组件 ``` 请选择地区 {{formData.province}} {{formData.city}} {{formData.district}} 设为默认地址 表单验证 // 表单验证 const rules = ref({ real_name: [ { required: true, message: '请输入收货人', trigger: 'blur' }, ], phone: [ { required: true, message: '请输入手机号码', trigger: 'blur' }, { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' } ], province: [ { required: true, message: '请选择地区', trigger: 'blur' }, ], address_name: [ { required: true, message: '请输入详细地址', trigger: 'blur' }, ] }) 获取验证结果 const valid = await formRef.value.validate() if (!valid.valid) { return toastRef.value.show('请将数据填写完整') } ``` ## m-icon > icon组件 ``` ``` ## m-images > 图片显示组件 ``` // 图片链接 url: { type: String, required: true }, // 图片裁剪、缩放模式 mode: { type: String as PropType, default: 'scaleToFill' }, // 宽度 width: { type: [String, Number], default: '100%' }, // 高度 height: { type: [String, Number], default: '100%' }, // loading图片大小 loadingSize: { type: [String, Number], default: '60rpx' }, // 圆角 角度 rounded:{ type: [Number,String], default: 0 }, // 是否开启点击后查看大图 showLarge:{ type:Boolean, default:false }, // 查看大图的数组 currImage:{ type: Array, default: ()=>[] } ``` ## m-list ## m-loading > 加载状态 ``` status?: LoadStatus /**'loading' | 'nodata' | 'getall' | 'loaded' 加载中 暂无数据 加载更多 加载完成 */ ``` ## m-login > 其他登录方式 ``` ``` ## m-navbar > 自定义导航栏 ``` backColor: { type: String, default: '#000019' }, // 返回图标颜色 background: { type: String, default: '' }, // 导航栏背景色 isFixed: { type: Boolean, default: true }, // 是否固定顶部 borderBottom: { type: Boolean, default: true }, // 是否显示底部边框 isBack: { type: [Boolean, String], default: true }, // 是否显示返回按钮 height: { type: [String, Number], default: '' }, // 导航栏高度(非小程序平台) backText: { type: String, default: '' }, // 返回按钮文字 backTextStyle: { type: Object, default: () => ({ color: '#606266' }) }, // 返回文字样式 title: { type: String, default: '' }, // 标题文本 titleWidth: { type: [String, Number], default: '250' }, // 标题宽度 titleColor: { type: String, default: '#606266' }, // 标题颜色 immersive: { type: Boolean, default: false }, // 是否沉浸式 titleBold: { type: Boolean, default: false }, // 标题是否加粗 titleSize: { type: [String, Number], default: 32 }, // 标题字号 customBack: { type: Function, default: null } // 自定义返回事件 ``` ## m-number-box > 数字输入框 ``` modelValue: { type: [Number, String], default: 1 }, min: { type: [Number, String], default: 1 }, max: { type: [Number, String], default: 100 }, step: { type: [Number, String], default: 1 }, disabled: { type: Boolean, default: false }, showMinus: { type: Boolean, default: true }, showPlus: { type: Boolean, default: true }, ``` ## m-picker > 下拉选择数据 ``` modelValue: boolean columns: PickerItem[] defaultValue?: (string | number)[] labelKey?: string valueKey?: string ``` ## m-popup > 弹出层 ``` // 显示隐藏 /** 显示隐藏*/ modelValue: { type: Boolean, default: false }, showmark: { type: Boolean, default: true }, bacground: { type: String, default: '#fff' }, title: { type: String, default: '' }, fontSize: { type: Number, default: 26 }, fontWeight: { type: Boolean, default: true }, showClose: { type: Boolean, default: false }, lineHeight: { type: Number, default: 30 }, zIndex: { type: Number, default: 11 }, closeIndex: { type: Number, default: 0 }, showTitle:{ type: Boolean, default: true }, /** 圆角: 可以传字符串统一四个角,也可以传对象分别控制 */ borderRadius: { type: [String, Object] as PropType, default: '20rpx' }, type: { type: String as PropType, default: 'bottom', }, ``` ## m-rating > 评分 ``` modelValue: { type: Number, default: 0 }, // 当前评分(可小数) max: { type: Number, default: 5 }, // 总星数 color: { type: String, default: "#FF7300" }, // 实心颜色 emptyColor: { type: String, default: "#e1e1e1" }, // 空心颜色 ``` ## m-skeleton ``` ``` ## m-swiper > 轮播图 ``` * 轮播图组件 * 支持视频和图片轮播 * 轮播切换时视频暂停,视频播放时轮播暂停,视频结束后轮播恢复 ``` ## m-tabbar > 自定义底部导航 ``` // 非凸起按钮未激活的图标,可以是uView内置图标名或自定义扩展图标库的图标 // 或者png图标的【绝对路径】,建议尺寸为80px * 80px // 如果是中间凸起的按钮,只能使用图片,且建议为120px * 120px的png图片 iconPath: "home", // 激活(选中)的图标,同上 selectedIconPath: "home-fill", // 显示的提示文字 text: "首页", // 红色角标显示的数字,如果需要移除角标,配置此参数为0即可 count: 2, // 如果配置此值为true,那么角标将会以红点的形式显示 isDot: true, // 如果使用自定义扩展的图标库字体,需配置此值为true // 自定义字体图标库教程:https://www.uviewui.com/guide/customIcon.html customIcon: false, // 如果是凸起按钮项,需配置此值为true midButton: false, // 点击某一个item时,跳转的路径,此路径必须是pagees.json中tabBar字段中定义的路径 pagePath: "", // 1.5.6新增,路径需要以"/"开头 定义 tabbar 场景,我们不建议在一个页面内通过几个组件,用v-if切换去模拟各个页面,而应该使用 uni-app 自带的 tabbar 系统,同时隐藏原生的 tabbar, 再引入自定导航栏,这样可以保证原有性能,同时又能自定义 tabbar,思路如下: 在 pages.json 中正常定义 tabbar 逻辑和字段,只需配置tabBar字段list中的pagePath(需以"/"开头)属性即可 在各个 tabbar 页面引入u-tabbar组件,组件会默认自动通过uni.hideTabBar()隐藏系统 tabbar 通过vuex引用同一份 tabbar 组件的list参数,这样可以做到修改某一个页面的u-tabbar数据,其他页面的u-tabbar也能同步更新 组件内部会自动处理各种跳转的逻辑,同时需要注意以下两点: 要在list参数中配置pagePath路径,此路径为pages.json中定义的 tabbar 字段的路径 此种方式,无需通过v-model绑定活动项,内部会自动进行判断和跳转 代码 let list = [ { // 非凸起按钮未激活的图标,可以是uView内置图标名或自定义扩展图标库的图标 // 或者png图标的【绝对路径】,建议尺寸为80px * 80px // 如果是中间凸起的按钮,只能使用图片,且建议为120px * 120px的png图片 iconPath: "home", // 激活(选中)的图标,同上 selectedIconPath: "home-fill", // 显示的提示文字 text: "首页", // 红色角标显示的数字,如果需要移除角标,配置此参数为0即可 count: 2, // 如果配置此值为true,那么角标将会以红点的形式显示 isDot: true, // 如果使用自定义扩展的图标库字体,需配置此值为true // 自定义字体图标库教程:https://www.uviewui.com/guide/customIcon.html customIcon: false, // 如果是凸起按钮项,需配置此值为true midButton: false, // 点击某一个item时,跳转的路径,此路径必须是pagees.json中tabBar字段中定义的路径 pagePath: "", // 1.5.6新增,路径需要以"/"开头 }, ]; # 代码