uni-ui 官方组件库介绍
uni-ui 是专为 uni-app 设计的官方组件库,提供了一套丰富的高质量组件,帮助开发者快速构建跨平台应用。这些组件经过深度优化,兼容多端运行环境,同时保持统一的交互体验和视觉风格。
uni-ui 的核心优势
uni-ui 的核心优势在于其跨平台适配能力。所有组件均经过多端测试,确保在 iOS、Android、H5 以及各小程序平台表现一致。例如,uni-popup
组件在不同平台上会自动采用原生模态框或自定义实现:
<uni-popup ref="popup" type="center">
<view class="popup-content">这是一个居中弹窗</view>
</uni-popup>
<script>
export default {
methods: {
showPopup() {
this.$refs.popup.open()
}
}
}
</script>
组件库采用模块化设计,支持按需引入。通过简单的 npm 安装后,可以在 pages.json
中全局配置或单页面局部引入:
// pages.json
{
"easycom": {
"autoscan": true,
"custom": {
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
}
}
}
常用组件详解
基础交互组件
uni-badge
是典型的轻量级标识组件,支持数字、文字和小圆点三种样式。通过 type
属性可以快速设置预设颜色:
<uni-badge text="99+" type="error" />
<uni-badge text="NEW" inverted />
uni-swipe-action
实现列表项滑动操作,支持左右双向滑动。配置项包括按钮组和触发阈值:
<uni-swipe-action>
<uni-swipe-action-item :options="options">
<view class="list-item">可滑动列表项</view>
</uni-swipe-action-item>
</uni-swipe-action>
<script>
export default {
data() {
return {
options: [
{
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}
]
}
}
}
</script>
表单组件增强
uni-forms
组件集成了验证功能,支持同步/异步校验规则。表单域通过 uni-forms-item
包裹,校验规则采用 JSON 配置:
<uni-forms :model="formData" :rules="rules" ref="form">
<uni-forms-item label="用户名" name="username">
<uni-easyinput v-model="formData.username" />
</uni-forms-item>
</uni-forms>
<script>
export default {
data() {
return {
formData: { username: '' },
rules: {
username: {
rules: [
{ required: true, errorMessage: '必填项' },
{ minLength: 3, errorMessage: '至少3个字符' }
]
}
}
}
}
}
</script>
uni-data-checkbox
支持多选组模式,数据源可静态定义或动态加载:
<uni-data-checkbox
v-model="selected"
:localdata="options"
multiple
/>
高级布局组件
uni-collapse
手风琴组件支持单个或多个面板同时展开。通过 accordion
属性切换模式:
<uni-collapse accordion>
<uni-collapse-item title="标题1">
<text>内容区域1</text>
</uni-collapse-item>
<uni-collapse-item title="标题2">
<text>内容区域2</text>
</uni-collapse-item>
</uni-collapse>
uni-grid
宫格组件支持自定义列数和边框样式。通过插槽可以完全控制内容呈现:
<uni-grid :column="4" :highlight="true">
<uni-grid-item v-for="(item,index) in 8" :key="index">
<image :src="'/static/icon'+index+'.png'" />
<text>选项{{index}}</text>
</uni-grid-item>
</uni-grid>
主题定制方案
uni-ui 提供完整的 CSS 变量体系实现主题定制。在 uni.scss
中修改变量即可全局生效:
/* 主色调 */
$uni-primary: #5a8bff;
/* 辅助色 */
$uni-success: #67c23a;
/* 文字色 */
$uni-text-color: #333;
组件库内置暗黑模式支持,通过 uni-dark
类名自动切换:
uni.setStorageSync('darkmode', true) // 触发暗黑模式
性能优化策略
uni-ui 组件内部实现了以下优化机制:
- 图片懒加载:
uni-img
组件自动监听视口 - 虚拟列表:
uni-list
处理大数据量渲染 - 动画优化:CSS 硬件加速过渡
<uni-list>
<uni-list-item
v-for="item in largeData"
:key="item.id"
:title="item.name"
virtual
/>
</uni-list>
扩展组件开发
基于 uni-ui 的扩展组件需要遵循特定规范。典型的结构包含以下文件:
my-component/
├── components/
│ └── my-component.vue
├── readme.md
└── package.json
组件 props 应该兼容 uni-app 的响应式系统:
props: {
// 支持动态类型检测
value: {
type: [String, Number],
default: ''
},
// 带有验证器的属性
size: {
validator(value) {
return ['small', 'medium', 'large'].includes(value)
}
}
}
多端差异处理
针对平台差异,组件内部使用条件编译:
// #ifdef MP-WEIXIN
this.initWechatAPI()
// #endif
// #ifdef APP-PLUS
this.initNativeModule()
// #endif
特殊样式通过后缀区分:
/* 小程序专用样式 */
.button__wx {
padding: 5px;
}
/* H5专用样式 */
.button__h5 {
padding: 8px;
}
调试与问题定位
uni-ui 提供完整的日志系统,通过设置 debug
属性输出内部状态:
<uni-popup debug />
常见问题处理方案:
- 样式冲突:检查组件外层是否被添加了额外样式
- 事件不触发:确认是否在自定义组件中正确声明事件
- 平台差异:使用条件编译处理特定平台逻辑
本站部分内容来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:cc@cccx.cn
上一篇:推送与通知(uni.push)
下一篇:uView UI 框架的使用