Mikhails Methoden sind korrekt, aber der Handler Rückgabewert ist nicht. 'not_handled' ist ein Fall-through-Fall, bei dem die Editor-Komponente die Eingabe normal verarbeiten kann. In diesem Fall möchten wir den Editor daran hindern, Eingaben zu verarbeiten.
In älteren Versionen von DraftJS sieht es aus wie das Vorhandensein einer Zeichenfolge, die in dem Behandlungscode als 'wahr' ausgewertet wird, und so verhielt sich der obige Code korrekt. In späteren Versionen von DraftJS funktioniert die obige Geige nicht - ich habe nicht den Ruf, mehr als eine Geige hier zu posten, aber versuche Mikhails Code mit v0.10 von DraftJS zu replizieren.
Um dies zu korrigieren, geben Sie 'handled' oder 'true' zurück, wenn der Editor die Eingabe nicht weiter verarbeiten soll.
Fiddle with corrected return values
Zum Beispiel
_handleBeforeInput =() => {
const currentContent = this.state.editorState.getCurrentContent();
const currentContentLength = currentContent.getPlainText('').length
if (currentContentLength > MAX_LENGTH - 1) {
console.log('you can type max ten characters');
return 'handled';
}
}
die DraftJS docs auf Cancelable Handlers Siehe für mehr.
Wie wäre es mit einem Anwendungsfall zum Hervorheben eines Teils des aktuellen Inhalts und Einfügen zum Überschreiben des hervorgehobenen Inhalts? – devonJS
@devonJS Guter Punkt, danke! Dieser Fall wurde ursprünglich nicht zur Verfügung gestellt. Ich habe die Antwort aktualisiert, derzeit überprüfen wir die Länge des ausgewählten Textes, wenn wir etwas Inhalt in den Editor einfügen. –