Vue implementiert das Senden von Emoticons im Chatfenster

Vue implementiert das Senden von Emoticons im Chatfenster

Der spezifische Code zum Senden von Emoticons im Vue-Chat-Feld und zum Senden von Emoticons in der Vue-Oberfläche dient zu Ihrer Information. Der spezifische Inhalt ist wie folgt

1. Bestimmen Sie beim Senden einer Nachricht, ob es sich bei der Nachricht um ein Emoticon handelt, den Emoticon-Typ: 3, den Inhalt: [Liebe], und speichern Sie sie in der Datenbank
2. Beurteilen Sie beim Abrufen des Chatverlaufs Typ===3 und verarbeiten Sie den Ausdruck.

<img v-else-if="chatItem.type === 3" :src="emojiUrl + emojiMap[chatItem.content]" style="width:25px;height:25px" />

1.textElement.vue

<Vorlage>
  <div Klasse="Textelement-Wrapper" >
    <div Klasse="Textelement">
      <div :class="istMine ? 'element-send' : 'element-received'">
        <p>{{ Datum }}</p>
        <!-- Text -->
        <span>{{ chatItem.content }}</span>
        <span v-if="chatItem.type === 1">{{ chatItem.content }}</span>
        <!-- Ausdruck -->
        <img v-else-if="chatItem.type === 3" :src="emojiUrl + emojiMap[chatItem.content]" style="width:25px;height:25px" />
      </div>
      <div :class="isMine ? 'send-img' : 'received-img'">
        <img: src="chatItem.from_headimg" Breite="40px" Höhe="40px"/>
      </div>
    </div>
  </div>
</Vorlage>

<Skript>
  // decodeText importieren aus '../../../untils/decodeText'
  importiere { getFullDate } von '../../../untils/common'
  importiere {emojiMap, emojiUrl} von '../../../untils/emojiMap'

  Standard exportieren {
    Name: 'TextElement',
    Requisiten: ['chatItem', 'isMine'],
    Daten() {
      zurückkehren {
        emojiMap: emojiMap,
        emojiUrl: emojiUrl,
      }
    },
    berechnet: {
      // Inhaltsliste() {
      // decodeText(dieses.chatItem) zurückgeben
      // },
      // Zeitstempel Verarbeitungsdatum () {
        returniere getFullDate(neues Datum(this.chatItem.time * 1000))
      },
    }
  }
</Skript>

<Stilbereich>
  .text-element-wrapper {
    Position: relativ;
    maximale Breite: 360px;
    Rahmenradius: 3px;
    Worttrennung: Worttrennung;
    Rand: 1px durchgezogenes RGB (235, 235, 235);
  }

  .text-element {
    Polsterung: 6px;
  }

  .element-empfangen {
    maximale Breite: 280px;
    Hintergrundfarbe: #fff;
    schweben: rechts;
  }
  .empfangen-img {
    schweben: links;
    Polsterung rechts: 6px;
  }

  .element-senden {
    maximale Breite: 280px;
    Hintergrund: RGB (5, 185, 240);
    schweben: links;
  }
  .send-img {
    schweben: rechts;
  }
</Stil>

Die Grundidee beim Senden von Emoticons in der Vue-Schnittstelle ist:

<Vorlage>    
 <Abschnitt Klasse="Dialog-Abschnitt Clearfix" >
            <div Klasse = "Zeile Clearfix" v-for = "(Element, Index) in msgs" :Schlüssel = Index>
                <img :src="item.uid == meineInfo.uid ? meineInfo.avatar :otherInfo.avatar" :class="item.uid == meineInfo.uid ? 'headerleft' : 'headerright'">
                <p :class="item.uid == myInfo.uid ? 'textleft' : 'textright'" v-html="customEmoji(item.content)"></p>
            </div>
        </Abschnitt>
         <div id="emoji-list" class="flex-column" v-if="emojiShow"> //Bestimmen Sie hiermit zunächst, ob das Emoji-Popup-Fenster angezeigt werden soll<div class="flex-cell flex-row" v-for="list in imgs">
                <div Klasse="flex-cell flex-row Zelle" v-for="Element in Liste" @click="inputEmoji(Element)">
                  <img :src="'./emoji/' + item + '.png'">
                </div>
              </div>
            </div>
</Vorlage>
<Skript>
import { sendMsg } from "@/ws"; //Dies ist eine lange Verbindung import _ from "lodash"; //Dies ist eine sehr leistungsfähige Bibliothek in js import eventBus from '@/eventBus' //Dies ist eine öffentliche Datei, die zwischen untergeordnetem und übergeordnetem Element übergeben wird console.log(emoji)
Standard exportieren {
  Daten() {
    this.imgs = _.chunk(emoji, 6) //Hiermit wird die Chunk-Methode der lodash-Bibliothek aufgerufen, um die sechs Elemente in ein Array aufzuteilen. Im Emoji-Array handelt es sich dabei lediglich um ein zweidimensionales Array. return {
      emojiShow: false //Zu Beginn wird die Klickschaltfläche standardmäßig nicht angezeigt. Um die Klickschaltfläche anzuzeigen, können Sie @click='emojiShow=emojiShow'} schreiben;
  },
  Methoden: {
    customEmoji(text) { //Diese Funktion wird vom Server verwendet, um den übergebenen Namen in ein Bild umzuwandeln. return text.replace(/\[([A-Za-z0-9_]+)\]/g, '<img src="./emoji/$1.png" style="width:30px; height:30px;">')
    },
    inputEmoji(Bild) {
      this.content += `[${pic}]` //Der übergebene Name wird in ein Bild umgewandelt}
};
</Skript>
<Stilbereich>
@import '../../assets/css/dialogue.css';

#Emoji-Liste {
  Höhe: 230px;
  Hintergrund: #fff;
}
#emoji-Liste .cell {
  Zeilenhöhe: 13vh;
  Rahmen rechts: 1rpx durchgezogen #ddd;
  Rahmen unten: 1rpx durchgezogen #ddd;
}
.flex-Zeile {
  Anzeige: Flex;
  Flex-Richtung: Reihe;
  Inhalt ausrichten: zentriert;
  Elemente ausrichten: zentrieren;
}
.flex-Spalte {
  Anzeige: Flex;
  Flex-Richtung: Spalte;
  Inhalt ausrichten: zentriert;
  Elemente ausrichten: strecken;
}
.flex-Zelle {
  biegen: 1;
}
.cell img {
  Breite: 35px;
  Höhe: 35px;
}
</Stil>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Eine Single-Page-Anwendungsfunktion, die mobiles QQ basierend auf Vue2 imitiert (Zugriff auf Chatbot)

<<:  Detaillierte Schritte zum Hinzufügen von Hosts, die Sie in Zabbix überwachen müssen

>>:  Lösung für den ONLY_FULL_GROUP_BY-Fehler in Mysql5.7 und höher

Artikel empfehlen

Detaillierte Schritte zur Neuinstallation von VMware Tools (grafisches Tutorial)

VMware Tools ist ein Tool, das mit virtuellen VMw...

Detailliertes Tutorial zur Installation von mysql-8.0.20 unter Linux

** Installieren Sie mysql-8.0.20 unter Linux ** U...

Vue+Element implementiert Dropdown-Menü mit lokaler Suchfunktion – Beispiel

brauchen: Das Backend gibt ein Array-Objekt zurüc...

Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen

Unter Linux können die Befehle cat, more und less...

So installieren Sie den Apache-Dienst im Linux-Betriebssystem

Downloadlink: Betriebsumgebung CentOS 7.6 in eine...

So implementieren Sie Eingabe-Checkboxen zur Erweiterung der Klickreichweite

XML/HTML-CodeInhalt in die Zwischenablage kopiere...

Detaillierte Erklärung asynchroner Iteratoren in nodejs

Inhaltsverzeichnis Vorwort Was sind asynchrone It...

Docker erstellt Schritte zur Implementierung von Kubectl-Images

Wenn der Programmdienst mit k8s bereitgestellt wi...

Detaillierte Erklärung des MySQL-Ausführungsplans

Die EXPLAIN-Anweisung liefert Informationen darüb...