赞
踩
请阅读这份文档https://tdesign.tencent.com/miniprogram/components/cell?tab=demo。使用腾讯的miniprogram tdesign UI库编写一个微信小程序的对话页面,要求消息在一侧,用户头像统一在左侧,每条消息底下有重用和复制按钮,点击可以把消息内容复制到粘贴板。消息输入框可以输入多行文字。
好的,以下是对话页面的代码实现:
在小程序项目中引入腾讯的miniprogram tdesign UI库,具体方法可以参考官方文档。
在对话页面的wxml文件中,使用td-cell组件来实现消息的展示,代码如下:
view class="message-list">
<td-cell class="message-item" wx:for="{{messages}}" wx:key="index">
view slot="left" class="avatar">
image src="{{item.avatar}}" mode="aspectFill"></image>
</view>
<view slot="title" class="message-content">{{item.content}}</view>
view slot="right" class="message-actions">
<button class="reuse-btn" data-content="{{item.content}}" bindtap="onReuse">重用</button>
button class="copy-btn" data-content="{{item.content}}" bindtap="onCopy">复制</button>
</view>
</td-cell>
</view>
其中,messages是一个数组,存储了所有的消息,每个消息包括头像、内容等信息。td-cell组件中,使用slot来分别放置头像、内容和操作按钮。操作按钮包括重用和复制,使用了data-*属性来存储消息内容,方便后续操作。
Page({ data: { messages: [ { avatar: 'https://xxx.com/avatar1.png', content: '你好,欢迎来到我的小程序!' }, { avatar: 'https://xxx.com/avatar2.png', content: '你好,有什么需要帮助的吗?' } ] }, onReuse: function(e) { // 重用按钮的点击事件处理函数 var content = e.currentTarget.dataset.content; // TODO: 实现重用功能 }, onCopy: function(e) { // 复制按钮的点击事件处理函数 var content = e.currentTarget.dataset.content; wx.setClipboardData({ data: content, success: function(res) { wx.showToast({ title: '已复制到粘贴板', icon: 'success', duration: 2000 }) } }) } })
其中,onReuse和onCopy分别是重用和复制按钮的点击事件处理函数。重用功能可以根据实际需求来实现,这里留空。复制功能使用了wx.setClipboardData方法来实现,将消息内容复制到粘贴板,并使用wx.showToast方法来提示用户复制成功。
.message-list { padding: 20rpx; } .message-item { margin-bottom: 20rpx; } .avatar { width: 60rpx; height: 60rpx; border-radius: 50%; overflow: hidden; } .message-content { font-size: 28rpx; line-height: 40rpx; margin-left: 20rpx; } .message-actions { display: flex; flex-direction: row; align-items: center; } .reuse-btn { margin-right: 20rpx; color: #007aff; } .copy-btn { color: #007aff; }
其中,调整了消息列表的padding和消息项的margin-bottom,使得页面更加美观。头像使用了border-radius属性来实现圆形,内容和操作按钮之间使用了margin-left来实现间距。操作按钮的颜色使用了蓝色,与微信的风格保持一致。
至此,对话页面的实现就完成了。用户可以在输入框中输入多行文字,发送消息后,消息会显示在页面上。用户可以点击重用按钮来重用消息,也可以点击复制按钮来复制消息内容到粘贴板。
好的,以下是使用tdesign实现微信小程序对话页面的步骤:
{
"usingComponents": {
"van-cell": "/miniprogram_npm/@vant/weapp/cell/index",
"van-icon": "/miniprogram_npm/@vant/weapp/icon/index",
"van-button": "/miniprogram_npm/@vant/weapp/button/index",
"van-field": "/miniprogram_npm/@vant/weapp/field/index"
}
}
<view class="container"> <scroll-view class="message-list" scroll-y="true" scroll-into-view="{{toView}}" scroll-with-animation> <view wx:for="{{messages}}" wx:key="{{index}}"> <van-cell class="message-cell" left-icon="{{item.avatar}}" is-link> <view slot="title">{{item.name}}</view> <view slot="right-icon"> <van-icon name="replay" size="16" color="#999" bind:tap="onReuseTap" data-index="{{index}}"></van-icon> van-icon name="copy" size="16" color="#999" bind:tap="onCopyTap" data-index="{{index}}"></van-icon> </view> view slot="value">{{item.content}}</view> </van-cell> </view> view class="scroll-to-bottom" id="scroll-to-bottom"></view> </scroll-view> van-field class="input-box" value="{{inputValue}}" placeholder="请输入消息" type="textarea" autosize maxlength="200" bind:input="onInput" bind:confirm="onSend"></van-field> </view>
.container { display: flex; flex-direction: column; height: 100%; } .message-list { flex: 1; padding: 10px; } .message-cell { margin-bottom: 10px; } .input-box { padding: 10px; background-color: #f5f5f5; }
Page({ data: { messages: [ { name: '小明', avatar: 'https://cdn.jsdelivr.net/gh/lin-xin/blog-images/14/avatar.jpg', content: '你好啊' }, { name: '小红', avatar: 'https://cdn.jsdelivr.net/gh/lin-xin/blog-images/15/avatar.jpg', content: '你好,有什么需要帮助的吗?' }, { name: '小明', avatar: 'https://cdn.jsdelivr.net/gh/lin-xin/blog-images/14/avatar.jpg', content: '我想问一下这个组件怎么用' }, { name: '小红', avatar: 'https://cdn.jsdelivr.net/gh/lin-xin/blog-images/15/avatar.jpg', content: '你可以看一下这个文档:https://tdesign.tencent.com/miniprogram/components/cell?tab=demo' } ], inputValue: '', toView: '' }, onInput(event) { this.setData({ inputValue: event.detail.value }) }, onSend() { const { messages, inputValue } = this.data if (!inputValue) return messages.push({ name: '我', avatar: 'https://cdn.jsdelivr.net/gh/lin-xin/blog-images/16/avatar.jpg', content: inputValue }) this.setData({ messages, inputValue: '', toView: `message-${messages.length - 1}` }) }, onReuseTap(event) { const { messages } = this.data const index = event.currentTarget.dataset.index const message = messages[index] messages.push({ name: '我', avatar: 'https://cdn.jsdelivr.net/gh/lin-xin/blog-images/16/avatar.jpg', content: message.content }) this.setData({ messages, toView: `message-${messages.length - 1}` }) }, onCopyTap(event) { const { messages } = this.data const index = event.currentTarget.dataset.index const message = messages[index] wx.setClipboardData({ data: message.content, success() { wx.showToast({ title: '已复制', icon: 'none' }) } }) } })
以上就是使用tdesign实现微信小程序对话页面的全部步骤,你可以根据自己的需求进行修改和扩展。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。