更新记录

1.0.0(2025-12-07) 下载此版本

appx-fav 是基于 uni-app X 开发的通用收藏组件,支持图标 / 文本自定义、选中状态切换、禁用状态控制等功能,适配多端渲染,可快速集成到各类需要收藏功能的业务场景中(如商品收藏、内容收藏等)。


平台兼容性

uni-app x(4.87)

Chrome Safari Android iOS 鸿蒙 微信小程序

appx-fav 收藏组件帮助文档

组件介绍

appx-fav 是基于 uni-app X 开发的通用收藏组件,支持图标/文本自定义、选中状态切换、禁用状态控制等功能,适配多端渲染,可快速集成到各类需要收藏功能的业务场景中(如商品收藏、内容收藏等)。

组件特性

  1. 支持图标与文本的样式、内容、颜色自定义;
  2. 双向绑定选中状态,兼容 v-model 语法;
  3. 支持禁用状态设置,禁用时不可点击且样式置灰;
  4. 样式解析兼容对象/字符串格式,适配不同传参场景;
  5. 内置过渡动画,交互体验更流畅;
  6. 适配布尔值的字符串/布尔类型传参,兼容性强。

基本使用

安装与引入

将组件文件(含template/script/style)放入项目 components/appx-fav 目录下,在需要使用的页面/组件中直接引用:

<template>
  <appx-fav v-model="isFav" />
</template>

<script lang="uts" setup>
const isFav = ref(false);
</script>

基础示例(带文本)

<appx-fav 
  v-model="isFav" 
  showText 
  normalText="收藏" 
  activeText="已收藏"
/>

属性(Props)说明

属性名 类型 默认值 说明
modelValue boolean/string false 双向绑定的选中状态,支持布尔值或字符串(如"true"/"false")
normalIcon string 未选中状态图标(支持字体图标、文本符号,如♥、iconfont图标)
activeIcon string 选中状态图标
iconSize string/number 24px 图标大小,支持px/rpx等单位,数字类型自动补全px
normalColor string #999999 未选中状态图标颜色(支持十六进制、rgb等格式)
activeColor string #FFD100 选中状态图标颜色
iconFontFamily string '' 字体图标库的字体家族(如iconfont)
showText boolean/string false 是否显示收藏文本,支持布尔值或字符串
normalText string 收藏 未选中状态文本
activeText string 已收藏 选中状态文本
textSize string/number 14px 文本大小,支持px/rpx等单位,数字类型自动补全px
normalTextColor string #666666 未选中状态文本颜色
activeTextColor string #FFD100 选中状态文本颜色
textMargin string/number 4px 文本与图标间距(默认左间距),支持px/rpx等单位
containerStyle object/string/null/undefined {} 容器自定义样式,支持对象或JSON格式字符串
iconStyle object/string/null/undefined {} 图标自定义样式,支持对象或JSON格式字符串
textStyle object/string/null/undefined {} 文本自定义样式,支持对象或JSON格式字符串
disabled boolean/string false 是否禁用组件,禁用后不可点击且样式置灰

事件说明

事件名 触发时机 回调参数 说明
update:modelValue 选中状态变更时 value: boolean v-model 双向绑定的内置事件,返回当前选中状态
change 选中状态变更时 value: boolean 状态变更的自定义事件,返回当前选中状态

高级用法

1. 自定义字体图标(如iconfont)

<appx-fav 
  v-model="isFav"
  normalIcon="&#xe600;" 
  activeIcon="&#xe601;"
  iconFontFamily="iconfont"
  iconSize="32rpx"
/>

注:需先在项目中引入iconfont字体库样式。

2. 自定义样式(对象/字符串格式)

<!-- 对象格式 -->
<appx-fav 
  v-model="isFav"
  showText
  containerStyle="{ padding: '8px 16px', borderRadius: '20px', background: '#f5f5f5' }"
  iconStyle="{ marginRight: '6px' }"
  textStyle="{ fontWeight: 'bold' }"
/>

<!-- 字符串格式(兼容JSON) -->
<appx-fav 
  v-model="isFav"
  containerStyle="'padding: 8px 16px; border-radius: 20px; background: #f5f5f5'"
/>

3. 禁用状态

<appx-fav 
  v-model="isFav"
  showText
  disabled="true"
/>

4. 监听状态变更

<template>
  <appx-fav 
    v-model="isFav"
    showText
    @change="handleFavChange"
  />
</template>

<script lang="uts" setup>
const isFav = ref(false);

const handleFavChange = (value) => {
  console.log('收藏状态变更:', value ? '已收藏' : '取消收藏');
  // 可在此处调用收藏/取消收藏的接口
};
</script>

注意事项

  1. 样式字符串解析:若传入的样式字符串格式不规范(如缺少引号、语法错误),会自动降级为空样式,并在控制台输出警告;
  2. 布尔值传参:组件兼容字符串类型的布尔值(如"false"会解析为false,"true"/其他字符串解析为true);
  3. 单位适配:数字类型的尺寸参数会自动补全px,如需rpx需手动传入字符串(如"32rpx");
  4. 多端适配:组件基于uni-app X的uts语法开发,需确保项目环境支持uts组件编译。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。