在 uni-app 中,“开源组件”通常指:
<uni-badge>、<uni-popup> 等)下面从 使用层面 和 源码层面 两种方式,讲如何“自定义”这些开源组件。
大部分开源组件都提供了可配置属性。
<uni-popup :mask-click="false" type="center">
<view class="custom-content">自定义内容</view>
</uni-popup>
✅ 优点:不影响源码、升级安全
很多组件支持插槽:
<uni-card>
<template #title>
<text>自定义标题</text>
</template>
自定义内容
</uni-card>
常见插槽:
#default#header#footeruni-app 支持 deep 修改组件内部样式。
<style scoped>
::v-deep .uni-popup__mask {
background-color: rgba(0,0,0,.8);
}
</style>
⚠ 注意:
- H5:
/deep/或::v-deep- 小程序:部分样式无法穿透(可用
!important或外部样式)
components/xxx)components/
└── uni-popup/
├── uni-popup.vue
└── ...
import uniPopup from '@/components/uni-popup/uni-popup.vue'
✅ 适合:
❌ 缺点:升级麻烦
适用于插件市场组件:
npm install my-uni-popup
最推荐的写法:
<!-- components/my-popup.vue -->
<template>
<uni-popup v-bind="$attrs" v-on="$listeners">
<slot />
</uni-popup>
</template>
<script>
import uniPopup from '@/components/uni-popup/uni-popup.vue'
export default {
components: { uniPopup }
}
</script>
<style>
::v-deep .uni-popup__content {
border-radius: 16rpx;
}
</style>
使用:
<my-popup>业务内容</my-popup>
✅ 优点:
| 需求 | 推荐方式 |
|---|---|
| 改颜色 / 圆角 | CSS 覆盖 |
| 加业务字段 | Slot |
| 改交互逻辑 | 源码 / 封装 |
| 多端适配 | 条件编译 |
| 统一项目管理 | 业务封装 |
node_modulescomponents 目录easycom 自动引入如果你能告诉我:
我可以直接给你 可复制的代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。