metody Michaiła są poprawne, lecz wartość zwracana obsługi nie jest. "not_handled" jest przypadkiem typu fall-through, który pozwala komponentowi Editor przetwarzać dane wejściowe w normalny sposób. W takim przypadku chcemy zatrzymać edytor przed przetwarzaniem danych wejściowych.
W starszych wersjach DraftJS wygląda na to, że w kodzie obsługi występuje ciąg znaków oznaczony jako "true", więc powyższy kod zachowywał się poprawnie. W późniejszych wersjach DraftJS powyższe skrzypce nie działa - nie mam reputacji, aby opublikować więcej niż jeden Fiddle tutaj, ale spróbuj użyć kodu Mikhail'a z wersją 0.0. DraftJS do replikacji.
Aby to poprawić, należy zwrócić wartość "handled" lub true, aby Edytor nie kontynuował przetwarzania danych wejściowych.
Fiddle with corrected return values
Na przykład
_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';
}
}
Zobacz DraftJS Docs na opłata teleskopowe na więcej.
a co z przypadkiem użycia, aby podświetlić część aktualnej treści i wkleić, aby zastąpić zaznaczoną treść? – devonJS
@devonJS Dobry punkt, dzięki! Ten przypadek nie został wstępnie przedstawiony. Zaktualizowałem odpowiedź, obecnie sprawdzamy długość wybranego tekstu po wklejeniu treści do edytora. –