Ein voll funktionsreicher reichen Texteditor für Android und iOS (macOS und Windows)?
Wenn Sie Flutter verwenden möchten, können Sie hier überprüfen, ob Sie flutter_rich_editor hinzufügen können
yarn add react-native-pell-rich-editor
or
npm i react-native-pell-rich-editor
Befolgen Sie hier auch Anweisungen, um die native Abhängigkeit react-native-webview hinzuzufügen.

### usecontainer = {true} muss in Scrolview platziert und eine oncursorPosition hinzufügen, um die Positionierung von Scroll -Balken zu verarbeiten. Siehe Beispiele this.scrollRef.current.scrollTo({y: scrollY - 30, animated: true});
RichEditorDie Editor -Komponente. Stellen Sie diese Komponente einfach in Ihrer Ansichtshierarchie ein, um einen voll funktionsfähigen reichen Texteditor zu erhalten.
RichEditor nimmt die folgenden optionalen Requisiten an:
html
Akzeptiert benutzerdefinierte HTML, sodass Sie Ihre eigenen Anpassungen vornehmen können
placeholder
Wickeln Sie den Platzhalter des Editor Contents ein
initialContentHTML
HTML, das im Inhaltsabschnitt über Last gerendert wird.
initialFocus
Boolescher Wert für den Fokus der ersten Inhaltsanforderung. Der Standardwert ist false .
disabled
Boolescher Wert, um den Redakteur zu deaktivieren. Der Standardwert ist false .
enterKeyHint
String -Wert zum festgelegten Rückgabeschlüsseltyp - returnKeyType
editorInitializedCallback
Eine Funktion, die aufgerufen wird, wenn der Editor initialisiert wurde.
editorStyle
Styling für Container oder für einen reichen Editor mehr dunkle oder helle Einstellungen. Objekt mit folgenden Optionen:
backgroundColor : Editor Hintergrundfarbecolor : Editor TextfarbecaretColor Cursor/AuswahlfarbeplaceholderColor : Redakteur Platzhaltertexte FarbecontentCSSText : Editor Content CSS -Text (Anfang gültig)cssText : Editor Global CSS -Text (Anfang gültig)initialCSSText : Injiziert CSS zu Beginn des Inline -Stylesheet. Nützlich für die Einbeziehung von benutzerdefinierten Schriftarten (siehe unten). onChange -Rückruf nach Editordatenänderung
onHeightChange -Rückruf nach der Höhe der Höhe
onMessage -Rückruf außerhalb der internen Verarbeitung der Postmessage
< img src ="" onclick =" _.sendEvent('ImgClick') " contenteditable =" false " /> command JS im Editor
// $ = document
this . richText . current ?. commandDOM ( '$.execCommand(' insertHTML ', false, "<br/>")' ) ; commandDOM manipulieren die DOM im Herausgeber
// $ = document.querySelector
this . richText . current ?. commandDOM ( `$('#title').style.color=' ${ color } '` ) ; useContainer Ein Boolean -Wert, der feststellt, ob ein Ansichtsbehälter um das Webview gewickelt ist. Der Standardwert ist wahr. Wenn Sie Ihre eigene Ansicht verwenden, um diese Bibliothek umzuwickeln, setzen Sie diesen Wert auf false.
styleWithCSS Wenn wahr, werden Stilattribut von Tags geändert. Ansonsten werden dedizierte Tags erstellt. Der Standardwert ist falsch
initialHeight UseContainer ist durch Inline -Ansicht der anfänglichen Höhe falsch
pasteAsPlainText Ein boolescher Wert (falsch wie Standard), der feststellt
useCharacter Die Option, chinesische Zeichen zu deaktivieren, ermöglicht es Ihnen, englische Zeichen ohne Fehler auf Android zu unterstützen. Standardmäßig auf true eingestellt, um die Kompatibilität rückwärts.
defaultHttps Ein boolescher Wert (true als Standard), der https: // zum Beginn der Links vorbereitet
onPaste Callback -Zwischenablagepaste Wert
onKeyUp Callback Keyup -Ereignis (Android 229 -Fehler)
onKeyDown Callback Keydown -Ereignis (Android 229 -Fehler)
onInput Eingabewert für den Eingang
onLink -Rückruf -Link Klicken Sie auf
onFocus Callback Editor Focus
onBlur Callback -Editor Blur
onCursorPosition -Rückruf Eingeben Sie die Position des Cursors this.scrollRef.current.scrollTo({y: scrollY - 30, duration: 100, animated: true});
RichEditor verfügt auch über Methoden, die auf seinem ref zum Setzen verwendet werden können:
setContentHTML(html: string)insertImage(url: string, style?: string)insertLink(title: string, url: string)insertText(text: string)insertHTML(html: string)insertVideo(url: string, style?: string)setContentFocusHandler(handler: Function)blurContentEditor()focusContentEditor() Diese Methode registriert eine Funktion, die aufgerufen wird, wenn sich die Position des Cursors ändert oder eine Änderung am Styling des Editors an der Position des Cursors vorgenommen wird. Der Rückruf wird mit einer Reihe von actions aufgerufen, die an der cusor -Position aktiv sind, sodass eine Symbolleiste auf Änderungen reagieren kann.
registerToolbar(listener: Function) < RichEditor
ref = { ( r ) => this . richtext = r }
initialContentHTML = { 'Hello <b>World</b> <p>this is a new paragraph</p> <p>this is another new paragraph</p>' }
editorInitializedCallback = { ( ) => this . onEditorInitialized ( ) }
/> Um benutzerdefinierte Schriftarten zu verwenden, müssen Sie initialCSSText aus der editorStyle -Requisite verwenden.
stylesheet.js -Datei. const FontFamilyStylesheet = `
@font-face {
font-family: 'Your Font Family';
src: url('data:font/ttf;charset=utf-8;base64,...............'); // You can also use a web url here
font-weight: normal;
}
` ;
export default FontFamilyStylesheet ;RichEditor -Komponente integriert haben, importieren Sie die Datei und verwenden Sie sie. import FontFamilyStylesheet from 'stylesheet.js' ;
const fontFamily = 'Your_Font_Family' ;
const initialCSSText = { initialCSSText : ` ${ FontFamilyStylesheet } ` , contentCSSText : `font-family: ${ fontFamily } ` }
< RichEditor editorStyle = { initialCSSText } / > Weitere Informationen zur Funktionsweise von initialCSSText finden Sie in der PR. Darüber hinaus wird dieser Ausgabekommentar und seine Gabel beschrieben, die beschreibt, wie die Coded -Schriftart Base64 verwendet wird.
RichToolbar Dies ist eine Komponente, die eine Symbolleiste für die einfache Steuerung eines Editors bietet. Es ist so konzipiert, dass es zusammen mit einer RichEditor -Komponente verwendet werden kann.
Die RichToolbar hat eine erforderliche Immobilie:
getEditor() Dies muss eine Funktion liefern, die einen ref an eine RichEditor zurückgibt.
Dies liegt daran, dass der ref erst nach dem ersten Render erstellt wird, vor der die Symbolleiste gerendert wird. Dies bedeutet, dass jeder direkt verabschiedete ref unweigerlich als undefined verabschiedet wird.
Andere Requisiten, die von der RichToolbar -Komponente unterstützt werden, sind:
actions
Eine array von actions , die von dieser Symbolleiste bereitgestellt werden sollen. Die Standardaktionen sind:
actions.insertImageactions.setBoldactions.setItalicactions.insertBulletsListactions.insertOrderedListactions.insertLinkactions.keyboardactions.setStrikethroughactions.setUnderlineactions.removeFormatactions.insertVideoactions.checkboxListactions.undoactions.redo onPressAddImage -Funktionen, die aufgerufen werden, wenn die addImage -Aktionen abgebildet werden.
onInsertLink -Logik für das, was passiert, wenn Sie auf die Taste Hinzufügen von Hinzufügen hinzufügen
disabled
Boolescher Wert, um den Redakteur zu deaktivieren. Der Standardwert ist false .
iconTint
unselectedButtonStyle
selectedIconTint
selectedButtonStyle
disabledIconTint
disabledButtonStyle
Diese bieten Optionen zum Styling -Action -Tasten.
iconSize
Definiert die Größe des Symbols in Pixeln. Standard ist 50.
renderAction
Altenativ können Sie eine Renderfunktion anstelle der Standardeinstellung bereitstellen, sodass Sie das Maut -Design vollständig steuern können.
iconMap
RichTextToolbar wird mit Standardsymbolen für die von ihm erzeugten Standardaktionen ausgestattet. Um diese außer Kraft zu setzen oder Symbole für Nicht-Default-Aktionen hinzuzufügen, geben Sie sie in einem Wörterbuch für diese Requisition an.
const richText = React . createRef ( ) || useRef ( ) ;
< RichToolbar editor = { that . richText } /> Um Ihre eigene benutzerdefinierte Aktion zu definieren:
actions .iconMap hinzu < RichToolbar
editor = { that . richText }
actions = { [
actions . setBold ,
actions . setItalic ,
actions . insertBulletsList ,
actions . insertOrderedList ,
actions . insertImage ,
'customAction' ,
] }
iconMap = { {
customAction : customIcon ,
} }
customAction = { this . handleCustomAction }
/> import React from "react" ;
import { Text , Platform , KeyboardAvoidingView , SafeAreaView , ScrollView } from "react-native" ;
import { actions , RichEditor , RichToolbar } from "react-native-pell-rich-editor" ;
const handleHead = ( { tintColor } ) => < Text style = { { color : tintColor } } > H1 </ Text >
const TempScreen = ( ) => {
const richText = React . useRef ( ) ;
return (
< SafeAreaView >
< ScrollView >
< KeyboardAvoidingView behavior = { Platform . OS === "ios" ? "padding" : "height" } style = { { flex : 1 } } >
< Text > Description: </ Text >
< RichEditor
ref = { richText }
onChange = { descriptionText => {
console . log ( "descriptionText:" , descriptionText ) ;
} }
/>
</ KeyboardAvoidingView >
</ ScrollView >
< RichToolbar
editor = { richText }
actions = { [ actions . setBold , actions . setItalic , actions . setUnderline , actions . heading1 ] }
iconMap = { { [ actions . heading1 ] : handleHead } }
/>
</ SafeAreaView >
) ;
} ;
export default TempScreen ;