当前位置: 首页 > news >正文

uniApp实战五:自定义组件实现便捷选择

文章目录

  • 1.最终效果预览
  • 2.快速选择组件封装
  • 3.弹框组件封装
  • 4.组件逻辑实现
  • 5.组件样式
  • 6.页面引入

1.最终效果预览

QQ_1752218066233

QQ_1752218119422

QQ_1752218139510

2.快速选择组件封装

<uv-cell :border="isShowBorder"><template v-slot:title><text class="title-key">{{ title }}</text></template><template v-slot:label><text style="font-size: 28rpx;color: #999;">{{content}}</text></template><template v-slot:value><view class="content"><view class="content-tag" v-for="(item, index) in showList" :key="index"><uv-tags :text="item.name" :plain="!item.checked" :name="index" shape="circle"@click="handleTagClick(index)"></uv-tags></view></view></template><template v-slot:right-icon><view class="content-tag" v-if="showList.length < list.length"><uv-icon size="30rpx" name="arrow-right" @click="showMoreOptions"></uv-icon></view></template></uv-cell>

基于 uv-ui 的行组件实现的快速选择,默认展示前三个值

3.弹框组件封装

<uv-popup ref="showPopup" mode="top"><view class="popup-content"><view class="popup-title">请选择</view><uv-radio-group v-model="selectedIndex" @change="handleRadioChange"><view v-for="(item, index) in list" :key="index" style="margin-right: 10px;"><uv-radio :name="index">{{ item.name }}</uv-radio></view></uv-radio-group><view class="popup-actions"><uv-button type="primary" @click="confirmSelection">确定</uv-button><uv-button @click="closePopup">取消</uv-button></view></view></uv-popup>

这两个放一个页面了,没必要再单独封装一个弹框组件了

4.组件逻辑实现

import {defineProps,defineEmits,computed,ref} from 'vue'const props = defineProps({isShowBorder: {type: Boolean,required: true},title: {type: String,required: true},content: {type: String,required: true},list: {type: Array,required: true},maxShow: {type: Number,default: 3}})const emit = defineEmits(['tagClick', 'tagMoreClick', 'selectionConfirmed'])const showList = computed(() => {return props.list.slice(0, props.maxShow)})const allList = computed(() => {return props.list})const handleTagClick = (index) => {emit('tagClick', index)}const handleMoreClick = () => {emit('tagMoreClick')}const showPopup = ref()const selectedIndex = ref({})const showMoreOptions = () => {showPopup.value.open()}const handleRadioChange = (index) => {selectedIndex.value = index}const confirmSelection = () => {emit('selectionConfirmed', selectedIndex.value)closePopup()}const closePopup = () => {showPopup.value.close()}

5.组件样式

.title-key {width: 150rpx;}.content {display: flex;flex-wrap: wrap;}.content-tag {margin: 0 0 10rpx 10rpx;}.popup-content {padding: 20rpx;}.popup-title {font-size: 32rpx;font-weight: bold;margin-bottom: 20rpx;}.popup-actions {display: flex;justify-content: space-evenly;margin-top: 20rpx;}

6.页面引入

import RowSel from '@/components/rowSel.vue'<RowSel :isShowBorder="true" :title="'维修大类'" :content="largeContent" :list="wxLargeAllList"@tagClick="radio1Click" @selectionConfirmed="tagMore1Click">
</RowSel>
<RowSel :title="'维修小类'" :content="smallContent" :list="wxSmallAllList" @tagClick="radio2Click"@selectionConfirmed="tagMore2Click">
</RowSel>const radio1Click = (index) => {}const radio2Click = (index) => {}const tagMore1Click = (index) => {radio1Click(index)}const tagMore2Click = (index) => {radio2Click(index)}

在点击事件中实现自己的逻辑选择即可

http://www.dtcms.com/a/274192.html

相关文章:

  • MyBatis缓存穿透深度解析:从原理到实战解决方案
  • Selenium 自动化实战技巧【selenium】
  • frame 与新窗口切换操作【selenium 】
  • 【JMeter】调试方法
  • Conda 安装与配置详解及常见问题解决
  • 从代码学习深度强化学习 - PPO PyTorch版
  • 番外-linux系统运行.net framework 4.0的项目
  • 《Java EE与中间件》实验三 基于Spring Boot框架的购物车
  • 【flutter】flutter网易云信令 + im + 声网rtm从0实现通话视频文字聊天的踩坑
  • 如何蒸馏 设计 中文nl2sql 数据集,进行grpo强化学习 训练qwen3-8b,可以提升大模型nl2sql的能力,支持300行sql生成
  • Redis 分片集群
  • mysql报错服务没有报告任何错误
  • AIGC(生成式AI)试用 33 -- 用AI学AI名词
  • 彻底解决JavaFx在Linux中文无法正常显示的问题(究其根本原因)
  • 剑指offer——数组:数组中重复的数字
  • 博客系统开发全流程解析(前端+后端+数据库)与 AI 协作初体验
  • [大模型问数]实现大模型调用MYSQL(03)【MCP笔记】
  • Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置
  • Shader面试题100道之(81-100)
  • 中学物理模拟实验Python程序集成打包
  • 牛客周赛 Round 99
  • Spring 声明式事务:从原理到实现的完整解析
  • 破解多宠管理难题,端侧AI重新定义宠物智能硬件
  • 《Spring 中上下文传递的那些事儿》Part 10:上下文敏感信息脱敏与审计日志记录
  • ESP32_启动日志分析
  • 【TCP/IP】17. 移动 IP
  • Linux权限的概念
  • 硬件加速(FPGA)
  • 函数指针指针函数 智能指针
  • 通过ETL工具,高效完成达梦数据库数据同步至数仓Oracle的具体实现