uni-app nvue聊天列表倒置问题

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app nvue聊天列表倒置问题

问题描述

用了list的render-reverse渲染
list总是到没有彻底到底部,总是差一行的聊天记录高度,不到底部。

开发环境 版本号 项目创建方式
1 回复

在uni-app中,使用nvue开发聊天列表时,如果你遇到需要倒置列表显示的问题,可以通过对数据源进行操作,然后在渲染时直接使用倒置后的数据。以下是一个简单的代码示例,展示如何在nvue中实现聊天列表的倒置显示。

首先,假设我们有一个包含聊天信息的数组chatList,每个聊天信息对象包含idnamemessage等属性。

// 示例聊天数据
var chatList = [
    {id: 1, name: 'Alice', message: 'Hello'},
    {id: 2, name: 'Bob', message: 'Hi'},
    {id: 3, name: 'Charlie', message: 'Hey'}
];

// 倒置数组
var reversedChatList = chatList.slice().reverse();

在nvue页面中,我们可以使用<list>组件来渲染这个聊天列表。以下是一个完整的nvue页面示例,展示如何倒置并显示聊天列表:

<template>
  <div>
    <list id="chat-list" :scroll-y="true">
      <list-header>
        <div style="height: 50px; line-height: 50px; text-align: center;">Chat List</div>
      </list-header>
      <list-item v-for="(chat, index) in reversedChatList" :key="chat.id">
        <div style="padding: 10px; border-bottom: 1px solid #ddd;">
          <div style="font-weight: bold;">{{ chat.name }}:</div>
          <div>{{ chat.message }}</div>
        </div>
      </list-item>
    </list>
  </div>
</template>

<script>
export default {
  data() {
    return {
      chatList: [
        {id: 1, name: 'Alice', message: 'Hello'},
        {id: 2, name: 'Bob', message: 'Hi'},
        {id: 3, name: 'Charlie', message: 'Hey'}
      ],
      reversedChatList: []
    };
  },
  mounted() {
    this.reversedChatList = this.chatList.slice().reverse();
  }
};
</script>

<style>
/* 添加一些基本的样式 */
#chat-list {
  height: 100%;
}
</style>

在这个示例中,我们在mounted生命周期钩子中对chatList进行了倒置操作,并将结果存储在reversedChatList中。然后,在<list-item>中使用v-for指令遍历reversedChatList来渲染聊天列表。

这种方法确保了聊天列表在页面加载时是倒置显示的。如果你需要在用户交互(如滚动到底部加载更多消息)时动态更新列表,记得在更新chatList后重新计算reversedChatList

回到顶部