亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue怎么實現聊天框發送表情功能

發布時間:2021-08-31 17:14:19 來源:億速云 閱讀:259 作者:chen 欄目:開發技術

本篇內容介紹了“vue怎么實現聊天框發送表情功能”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

vue聊天框發送表情以及vue界面發送表情實現的具體代碼,供大家參考,具體內容如下

1.在發送消息的時候,判斷發送的消息是不是表情,表情的type:3,content:[愛心],這樣存儲在數據庫中
2.在獲取聊天記錄的時候,判斷type===3,處理表情,

<img v-else-if="chatItem.type === 3" :src="emojiUrl + emojiMap[chatItem.content]"  />

1.textElement.vue

<template>
  <div class="text-element-wrapper" >
    <div class="text-element">
      <div :class="isMine ? 'element-send' : 'element-received'">
        <p>{{ date }}</p>
        <!-- 文字 -->
        <span>{{ chatItem.content }}</span>
        <span v-if="chatItem.type === 1">{{ chatItem.content }}</span>
        <!-- 表情 -->
        <img v-else-if="chatItem.type === 3" :src="emojiUrl + emojiMap[chatItem.content]"  />
      </div>
      <div :class="isMine ? 'send-img' : 'received-img'">
        <img :src="chatItem.from_headimg" width="40px" height="40px"/>
      </div>
    </div>
  </div>
</template>

<script>
  // import decodeText from '../../../untils/decodeText'
  import { getFullDate } from '../../../untils/common'
  import {emojiMap, emojiUrl} from '../../../untils/emojiMap'

  export default {
    name: 'TextElement',
    props: ['chatItem', 'isMine'],
    data() {
      return {
        emojiMap: emojiMap,
        emojiUrl: emojiUrl,
      }
    },
    computed: {
      // contentList() {
      //   return decodeText(this.chatItem)
      // },
      // 時間戳處理
      date () {
        return getFullDate(new Date(this.chatItem.time * 1000))
      },
    }
  }
</script>

<style scoped>
  .text-element-wrapper {
    position: relative;
    max-width: 360px;
    border-radius: 3px;
    word-break: break-word;
    border: 1px solid rgb(235, 235, 235);
  }

  .text-element {
    padding: 6px;
  }

  .element-received {
    max-width: 280px;
    background-color: #fff;
    float: right;
  }
  .received-img {
    float: left;
    padding-right: 6px;
  }

  .element-send {
    max-width: 280px;
    background: rgb(5, 185, 240);
    float: left;
  }
  .send-img {
    float: right;
  }
</style>

vue界面發送表情實現,主要是思路:

<template>    
 <section class="dialogue-section clearfix" >
            <div class="row clearfix" v-for="(item,index) in msgs" :key = index>
                <img :src="item.uid == myInfo.uid ? myInfo.avatar :otherInfo.avatar" :class="item.uid == myInfo.uid ? 'headerleft' : 'headerright'">
                <p :class="item.uid == myInfo.uid ? 'textleft' : 'textright'" v-html="customEmoji(item.content)"></p>
            </div>
        </section>
         <div id="emoji-list" class="flex-column" v-if="emojiShow"> //首先根據這個來判斷發送表情彈窗用不用出現
              <div class="flex-cell flex-row" v-for="list in imgs">
                <div class="flex-cell flex-row cell" v-for="item in list" @click="inputEmoji(item)">
                  <img :src="'./emoji/'+ item + '.png'">
                </div>
              </div>
            </div>
</template>
<script>
import { sendMsg } from "@/ws"; //是一個長連接
import _ from "lodash";//這個是js一個很強大的庫 
import eventBus from '@/eventBus'//這是一個子父傳遞的公共文件
console.log(emoji)
export default {
  data() {
    this.imgs = _.chunk(emoji, 6) //這個是調用lodash庫的chunk方法 把 六個元素分成一個數組只不過是emoji這個數組中的二維數組
    return {
      emojiShow: false //剛開始默認不顯示 點擊按鈕顯示 點擊的按鈕上可以寫@click='emojiShow=emojiShow'這種寫法
    };
  },
  methods: {
    customEmoji(text) { //這個函數就是服務器端把傳過來的名稱轉化為圖片的
      return text.replace(/\[([A-Za-z0-9_]+)\]/g, '<img src="./emoji/$1.png" >')
    },
    inputEmoji(pic) {
      this.content += `[${pic}]`//傳過來的名字轉為圖片
    }
};
</script>
<style scoped>
@import '../../assets/css/dialogue.css';

#emoji-list {
  height: 230px;
  background: #fff;
}
#emoji-list .cell {
  line-height: 13vh;
  border-right: 1rpx solid #ddd;
  border-bottom: 1rpx solid #ddd;
}
.flex-row {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}
.flex-column {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
}
.flex-cell {
  flex: 1;
}
.cell img {
  width: 35px;
  height: 35px;
}
</style>

“vue怎么實現聊天框發送表情功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

离岛区| 商南县| 彝良县| 射阳县| 屏南县| 兴城市| 策勒县| 巴中市| 子长县| 新余市| 讷河市| 马尔康县| 西乌珠穆沁旗| 安化县| 桐庐县| 罗平县| 齐齐哈尔市| 凉城县| 汝城县| 武功县| 彩票| 扎赉特旗| 文成县| 安丘市| 陆丰市| 黄石市| 九江市| 青冈县| 平湖市| 突泉县| 海晏县| 留坝县| 巴东县| 灌南县| 丹凤县| 宁远县| 鸡泽县| 平安县| 阳高县| 临湘市| 潞西市|