uni-app 4.10封装聊天列表组件

本文通过一个具体的例子展示了如何使用Vue组件`free-media-list.vue`来渲染列表。组件中包含了用户头像、昵称、更新时间和消息内容,同时支持长按和点击事件。在父组件`index.nvue`中,利用`v-for`指令遍历数据并展示列表,每个列表项都带有未读消息的角标。此外,文章还涉及到了时间格式化过滤器的使用。
摘要由CSDN通过智能技术生成

聊天组件free-media-list.vue,如下代码

<template>
	<view hover-class="bg-light">
		<div class="flex align-stretch">
			<view class=" flex align-center justify-center position-relative" style="width: 145rpx;" @click="onClick" @longpress="long">
				<free-avatar :src="item.avatar" size="92"></free-avatar>
				<!-- 角标 -->
				<free-badge badgeClass="position-absolute" bageStyle="top:15rpx;right:15rpx;" :num="item.noreadnum" v-if="item.noreadnum>0"></free-badge>
			</view>
			<view class="flex flex-column border-bottom flex-1 py-3 pr-3 border-light-secondary">
				<view class="flex align-center justify-between mb-1">
					<text class="font-md">{{item.nickname}}</text>
					<text class="font-sm text-light-muted">{{item.update_time|formateTime}}</text>
				</view>
				<text class="font text-ellipsis text-light-muted">{{item.data}}</text>
			</view>
		</div>
	</view>
</template>

<script>
	import freeAvatar from './free-avatar.vue';
	import $Time from "@/common/free-lib/time.js";
	import freeBadge from "./free-badge.vue";
	
	export default{
		components:{
			freeAvatar,
			freeBadge
		},
		props:{
			item:Object,
			index:Number,
		},
		methods:{
			long(e){
				console.log(e)
			},
			onClick(){
				this.$emit('click');
			}
		}
	}
</script>

<style>
</style>

index.nvue引入

<template>
	<view class="">
		<free-nav-bar :title="'微信(100)'" :fixed='true'>
			<template v-slot="title"></template>
		</free-nav-bar>
		
		<!-- 列表 --> 
		<block v-for="(item,index) in list" :key="index">
			<free-media-list :item="item" :index="index"></free-media-list>
		</block>
	</view>
</template>

<script>
	import freeNavBar from '@/components/free-ui/free-nav-bar.vue';
	import freeMediaList from '@/components/free-ui/free-media-list.vue';
	export default {
		components: {
			freeNavBar,
			freeMediaList
		},
		data() {
			return {
				list:[
					{
						avatar:"/static/images/demo/demo6.jpg",
						nickname:"昵称",
						update_time:1628069958,
						data:"你好啊,哈哈哈",
						noreadnum:1
					},
					{
						avatar:"/static/images/demo/demo6.jpg",
						nickname:"昵称",
						update_time:1628069958,
						data:"你好啊,哈哈哈",
						noreadnum:12
					},
					{
						avatar:"/static/images/demo/demo6.jpg",
						nickname:"昵称",
						update_time:1628069958,
						data:"你好啊,哈哈哈",
						noreadnum:2
					},
					{
						avatar:"/static/images/demo/demo6.jpg",
						nickname:"昵称",
						update_time:1628069958,
						data:"你好啊,哈哈哈",
						noreadnum:10
					}
				]
			}
		},
		filters:{
			formateTime(value){
				return $Time.gettime(value);
			}
		},
		onLoad() {
			
		},
		methods: {

		}
	}
</script>

<style>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2019ab

你的鼓励就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值