Skip to content

PostCard 动态卡片

基础用法

  • 用于展示社交动态/帖子卡片,包含头部(头像、昵称、时间、扩展操作区)、正文、底部操作栏与评论区。
  • 头部由 avatarConfignicknamedatetime 等数据驱动,也可通过插槽整体替换。
  • 操作栏与评论区支持数组数据渲染,操作项支持激活态与禁用态。
  • 头像、昵称、头部、正文、操作按钮、评论用户名、评论文本均有独立点击事件。
vue
<template>
	<sn-post-card :avatar-config="avatarConfig" nickname="林间有风" :datetime="datetime"
		:actions="actions" @action-click="onActionClick">
		<sn-text text="周末去郊外徒步,山顶的风景太治愈了。"></sn-text>
		<template #header-action>
			<sn-icon name="more-line" :size="18" color="$textLight"></sn-icon>
		</template>
	</sn-post-card>
</template>
<script lang="uts" setup>
import type { SnAvatarConfig, SnPostCardAction } from '@/uni_modules/sinle-ui/core/types/index.uts'

const datetime: number = Date.now()
const avatarConfig: SnAvatarConfig = {
	mode: 'text',
	text: '林',
	size: '40px',
	shape: 'circle',
	bgColor: '$primary',
	textColor: '#FFFFFF'
}
const actions: SnPostCardAction[] = [
	{ id: 'like', icon: 'heart-3-line', text: '86', activeIconColor: '$error', activeTextColor: '$error' },
	{ id: 'comment', icon: 'chat-1-line', text: '32' }
]

function onActionClick(action: SnPostCardAction, index: number): void {
	if (action.id == 'like') {
		action.isActive = !(action.isActive ?? false)
		action.icon = action.isActive ? 'heart-3-fill' : 'heart-3-line'
	}
}
</script>

更多演示请下载 demo 查看

评论区

通过 comments 数组渲染评论列表,评论项的 replyTo 生成「xxx 回复 xxx」结构;show-more 显示展开评论按钮。

vue
<template>
	<sn-post-card :avatar-config="avatarConfig" nickname="林间有风" :datetime="datetime"
		:comments="comments" :show-more="true"
		@comment-user-click="onCommentUserClick" @comment-click="onCommentClick" @more-click="onMoreClick">
		<sn-text text="看到一个填词挑战,也试着填一下。"></sn-text>
	</sn-post-card>
</template>
<script lang="uts" setup>
import type { SnAvatarConfig, SnPostCardComment } from '@/uni_modules/sinle-ui/core/types/index.uts'

const comments: SnPostCardComment[] = [
	{ id: 'c1', user: '聆江', content: '写得很安静,喜欢。' },
	{ id: 'c2', user: '猫屋', content: '喵喵喵?', replyTo: '聆江' }
]
</script>

插槽自定义

头部(header)、头像(avatar)、昵称/时间区(info)、头部扩展操作区(header-action)、底部操作栏(action)、评论区(comment)均可整体替换。

vue
<template>
	<sn-post-card>
		<template #avatar>
			<sn-avatar text="A" :size="40" shape="circle" bg-color="$warning" text-color="#FFFFFF"></sn-avatar>
		</template>
		<template #info>
			<sn-text bold font-size="$14" color="$title" text="Aiden"></sn-text>
		</template>
		<template #action>
			<sn-button level="second" text="评论"></sn-button>
			<sn-button level="second" text="转发"></sn-button>
		</template>
		<sn-text text="城市的傍晚自带滤镜,随手一拍就是壁纸。"></sn-text>
	</sn-post-card>
</template>

属性

基础

参数说明类型默认值可选值
avatarConfig头像配置,字段见文末 SnAvatarConfig(src/text/icon 均为空时不显示头像)SnAvatarConfig{}-
nickname昵称String''-
datetime时间戳(毫秒),大于 0 时显示Number0-
dateFormat时间格式化模板StringYYYY-MM-DD HH:mm:ss-

内置 sn-avatar 的组件(如列表项、发布卡)可通过 avatarConfig 属性统一配置头像参数。

名称类型必填描述
modeSnAvatarMode显示模式,默认 image
srcString图片路径(modeimage 时生效)
textString文本内容(modetext 时生效)
iconString图标名(modeicon 时生效)
sizeString | Number尺寸大小
shapeSnAvatarShape形状
bgColorString背景颜色
textColorString文本颜色
iconColorString图标颜色
borderRadiusString | Number圆角大小
enablePreviewBoolean是否启用图片预览(modeimage 时生效)

头像显示模式:图片 / 文本 / 图标。

可选值备注
image图片
text文本
icon图标

头像形状:方形 / 圆形。

可选值备注
square方形
circle圆形

颜色与字号

参数说明类型默认值可选值
bgColor卡片背景颜色String$front-
nicknameColor昵称颜色String$title-
nicknameSize昵称字体大小,支持 $ 简写String | Number$14-
datetimeColor时间文本颜色String$textLight-
datetimeSize时间字体大小,支持 $ 简写String | Number$11-
actionColor操作按钮默认颜色(图标与文本未单独指定时生效)String$textLight-
actionSize操作文本字体大小,支持 $ 简写String | Number$12-
actionIconSize操作图标大小,支持 $ 简写String | Number$18-
commentUserColor评论用户名颜色String$primary-
commentColor评论文本颜色String$text-
commentSize评论字体大小,支持 $ 简写String | Number$14-

数据

参数说明类型默认值可选值
actions底部操作项列表,字段见文末 SnPostCardActionSnPostCardAction[][]-
comments评论列表,字段见文末 SnPostCardCommentSnPostCardComment[][]-
showMore是否显示展开评论按钮(评论区无内容且 showMore 为 true 时也会渲染)Booleanfalsetrue | false
moreText展开评论按钮文本String查看更多评论-

操作栏按钮配置。

名称类型必填描述
idString按钮 id
iconString图标名
textString按钮文字(一般为数量)
disabledBoolean是否禁用
isActiveBoolean是否处于激活态(如已点赞)
iconColorString图标颜色
textColorString文字颜色
activeIconColorString激活态图标颜色
activeTextColorString激活态文字颜色

评论区条目。

名称类型必填描述
idString评论 id
userString评论用户
contentString评论内容
replyToString回复的用户名(为空表示直接评论)

样式扩展

参数说明类型默认值可选值
customStyle根节点样式UTSJSONObject | String''-
customClass根节点外部样式类(external-class:custom-class)String''-
headerStyle头部区域样式UTSJSONObject | String''-
headerClass外部样式类String''-
infoStyle昵称与时间容器样式UTSJSONObject | String''-
infoClass外部样式类String''-
nicknameStyle昵称样式UTSJSONObject | String''-
nicknameClass外部样式类String''-
datetimeStyle时间样式UTSJSONObject | String''-
datetimeClass外部样式类String''-
contentStyle正文区域样式UTSJSONObject | String''-
contentClass外部样式类String''-
actionStyle底部操作栏样式UTSJSONObject | String''-
actionClass外部样式类String''-
actionBtnStyle操作按钮样式UTSJSONObject | String''-
actionBtnClass外部样式类String''-
commentsStyle评论区容器样式UTSJSONObject | String''-
commentsClass外部样式类String''-
commentStyle单条评论样式UTSJSONObject | String''-
commentClass外部样式类String''-
moreStyle展开评论按钮样式UTSJSONObject | String''-
moreClass外部样式类String''-

头部区域在 nicknamedatetime(大于 0)、avatarConfig 含 src/text/icon、或 header/avatar/info/header-action 插槽任一存在时渲染;正文、操作栏、评论区分别在其数据或插槽存在时渲染。

事件

名称类型说明
avatar-click(event: UniPointerEvent) => Void点击头像时触发
nickname-click(event: UniPointerEvent) => Void点击昵称时触发
header-click(event: UniPointerEvent) => Void点击头部区域时触发
content-click(event: UniPointerEvent) => Void点击正文区域时触发
action-click(action: SnPostCardAction, index: number) => Void点击底部操作按钮时触发(禁用项不触发)
comment-click(comment: SnPostCardComment, index: number) => Void点击评论文本时触发
comment-user-click(comment: SnPostCardComment, name: string) => Void点击评论中的用户名或被回复用户名时触发
more-click() => Void点击展开评论按钮时触发

插槽

名称说明
default正文内容
header整体替换头部区域(含头像、昵称、时间与扩展操作区)
avatar自定义头像(替换 avatarConfig 渲染的头像)
info自定义昵称与时间区域
header-action头部右侧扩展操作区(如「更多」按钮)
action整体替换底部操作栏
comment整体替换评论列表(show-more 对应的展开按钮仍按需渲染在评论区底部)

类型

操作项。

名称类型必填描述
idString操作项标识,可用于点击回调中区分操作
iconString操作图标名称,不传则只显示文本
textString操作文本(如点赞数),不传则只显示图标
disabledBoolean是否禁用(降低透明度且不可点击)
isActiveBoolean是否激活,激活时图标与文本使用 active 系列颜色
iconColorString图标颜色
textColorString文本颜色
activeIconColorString激活状态图标颜色
activeTextColorString激活状态文本颜色

评论项。

名称类型必填描述
idString评论标识
userString评论用户名,点击可触发 comment-user-click 事件
contentString评论内容
replyToString被回复用户名,传入后渲染「xxx 回复 xxx」结构,被回复用户名同样可点击

头像显示模式:图片 / 文本 / 图标。

可选值备注
image图片
text文本
icon图标

头像形状:方形 / 圆形。

可选值备注
square方形
circle圆形

使用 MIT 协议