使用
- 在
main.ts
中引入组件
(1)下载表情包资源emoji.zip下载
(2)static文件放在public下,引入emoji.ts文件可以移动assets下引入,也可以自定义到指定位置
ts
import { createApp } from 'vue'
import App from './App.vue'
import UndrawUi from 'undraw-ui'
import 'undraw-ui/dist/style.css'
const app = createApp(App)
app.use(UndrawUi)
app.mount('#app')
- 在
App.vue
中基础使用 → 其他功能
ts
<template>
<u-comment :config="config" @submit="submit">
<!-- <template>导航栏卡槽</template> -->
<!-- <template #header>头部卡槽</template> -->
<!-- <template #info>信息卡槽</template> -->
<!-- <template #card>用户信息卡片卡槽</template> -->
<!-- <template #func>功能区域卡槽</template> -->
</u-comment>
</template>
<script setup lang="ts">
// 下载表情包资源emoji.zip https://gitee.com/undraw/undraw-ui/releases/tag/v0.0.0
// static文件放在public下,引入emoji.ts文件可以移动assets下引入,也可以自定义到指定位置
import emoji from './emoji'
import { reactive } from 'vue'
import { CommentApi, ConfigApi, SubmitParamApi, UToast } from 'undraw-ui'
defineOptions({
name: 'comment'
})
const config = reactive<ConfigApi>({
user: {} as any,
emoji: emoji,
comments: [],
showLevel: false,
showHomeLink: false,
showAddress: false,
showLikes: false
})
// 评论数据
setTimeout(() => {
config.user = {
id: 1,
username: 'jack',
avatar: 'https://static.juzicon.com/avatars/avatar-200602130320-HMR2.jpeg?x-oss-process=image/resize,w_100'
}
config.comments = [
{
id: '1',
parentId: null,
uid: '1',
content: '等闲识得东风面,万紫千红总是春。',
createTime: '2023-04-30 16:22',
user: {
username: '团团喵喵',
avatar: 'https://static.juzicon.com/user/avatar-23ac4bfe-ae93-4e0b-9f13-f22f22c7fc12-221001003441-Y0MB.jpeg'
}
},
{
id: '2',
parentId: null,
uid: '2',
content: '长风破浪会有时,直挂云帆济沧海。',
createTime: '2023-04-28 09:00',
user: {
username: '且美且独立',
avatar: 'https://static.juzicon.com/avatars/avatar-20200926115919-a45y.jpeg'
}
}
]
}, 500)
// 评论提交事件
let temp_id = 100
// 提交评论事件
const submit = ({ content, parentId, files, finish }: SubmitParamApi) => {
console.log('提交评论: ' + content, parentId, files)
const comment: CommentApi = {
id: String((temp_id += 1)),
parentId: parentId,
uid: config.user.id,
content: content,
createTime: '1分钟前',
user: {
username: config.user.username,
avatar: config.user.avatar
},
reply: null
}
setTimeout(() => {
finish(comment)
UToast({ message: '评论成功!', type: 'info' })
}, 200)
}
</script>
js
<template>
<u-comment :config="config" @submit="submit" @like="like">
<!-- <template>导航栏卡槽</template> -->
<!-- <template #info>用户信息卡槽</template> -->
<!-- <template #card>用户信息卡片卡槽</template> -->
<!-- <template #opearte>操作栏卡槽</template> -->
</u-comment>
</template>
<script setup>
// 下载表情包资源emoji.zip [emoji.zip下载](https://gitee.com/undraw/undraw-ui/releases/tag/v0.0.0)
// static文件放在public下,引入emoji.ts文件可以移动assets下引入,也可以自定义到指定位置
import emoji from './emoji'
import { reactive } from 'vue'
import { UToast, createObjectURL } from 'undraw-ui'
const config = reactive({
user: {
id: 1,
username: 'jack',
avatar: 'https://static.juzicon.com/avatars/avatar-200602130320-HMR2.jpeg?x-oss-process=image/resize,w_100',
// 评论id数组 建议:存储方式用户uid和评论id组成关系,根据用户uid来获取对应点赞评论id,然后加入到数组中返回
likeIds: [1, 2, 3]
},
emoji: emoji,
comments: [],
total: 10
})
let temp_id = 100
// 提交评论事件
const submit = ({ content, parentId, files, finish, reply }) => {
let str = '提交评论:' + content + ';\t父id: ' + parentId + ';\t图片:' + files + ';\t被回复评论:'
console.log(str, reply)
/**
* 上传文件后端返回图片访问地址,格式以'||'为分割; 如: '/static/img/program.gif||/static/img/normal.webp'
*/
let contentImg = files.map(e => createObjectURL(e)).join('||')
const comment = {
id: String((temp_id += 1)),
parentId: parentId,
uid: config.user.id,
address: '来自江苏',
content: content,
likes: 0,
createTime: '1分钟前',
contentImg: contentImg,
user: {
username: config.user.username,
avatar: config.user.avatar,
level: 6,
homeLink: `/${(temp_id += 1)}`
},
reply: null
}
setTimeout(() => {
finish(comment)
UToast({ message: '评论成功!', type: 'info' })
}, 200)
}
// 点赞按钮事件 将评论id返回后端判断是否点赞,然后在处理点赞状态
const like = (id, finish) => {
console.log('点赞: ' + id)
setTimeout(() => {
finish()
}, 200)
}
config.comments = [
{
id: '1',
parentId: null,
uid: '1',
address: '来自上海',
content:
'缘生缘灭,缘起缘落,我在看别人的故事,别人何尝不是在看我的故事?别人在演绎人生,我又何尝不是在这场戏里?谁的眼神沧桑了谁?我的眼神,只是沧桑了自己[喝酒]',
likes: 2,
contentImg: 'https://gitee.com/undraw/undraw-ui/raw/master/public/docs/normal.webp',
createTime: '1分钟前',
user: {
username: '落🤍尘',
avatar: 'https://static.juzicon.com/avatars/avatar-200602130320-HMR2.jpeg?x-oss-process=image/resize,w_100',
level: 6,
homeLink: '/1'
}
}
]
</script>