Sie können dies tun, ohne Text in das Element mit einer benutzerdefinierten Klasse einzufügen. Sie können ausgewählten Text mit der Methode RichUtils.toggleInlineStyle
formatieren. Weitere Details beschrieben here. Betrachten Sie dieses Arbeitsbeispiel - https://jsfiddle.net/x2gsp6ju/2/
Definieren Sie customStyleMap
Objekt. Die Schlüssel dieses Objekts sollten eindeutige Namen Ihrer benutzerdefinierten Stile und Werte sein - Objekte mit geeigneten Stilen.
const customStyleMap = {
redBackground: {
backgroundColor: 'red'
},
underlined: {
textDecoration: 'underline',
fontSize: 26
},
};
Pass dieses Objekt customStyleMap
Eigenschaft Editor
Komponente:
<Editor
placeholder="Type away :)"
editorState={this.state.editorState}
onChange={this._handleChange}
customStyleMap={customStyleMap}
/>
In diesem Beispiel gelten I Stile für ausgewählte Text nach Klick auf den entsprechenden Schaltflächen, rufe ich this.applyCustomSTyles
Methode und übergeben Stil-Namen wie erstes Argument. Bei diesem Verfahren erzeuge ich neue editorState
mit RichUtils.toggleInlineStyles
:
applyCustomStyles = (nameOfCustomStyle) => {
this._handleChange(
RichUtils.toggleInlineStyle(
this.state.editorState,
nameOfCustomStyle
)
);
}
Haben Sie für die Anwendung benutzerdefinierte Stile zu dieser Klasse markierten Text, um 'span' mit einer benutzerdefinierten Klasse wickeln wollen? Wenn dies der Fall ist, können Sie es ohne den benutzerdefinierten Block von draft-js lösen. –
@MikhailShabrikov Ja, das ist mein Ziel. Wenn es ohne einen benutzerdefinierten Block gemacht werden kann, umso besser. – Finglish
Passt meine Lösung zu Ihrem Problem? –