Un modo per creare un TextInput "ricco" in React Native? Forse non è un vero e proprio wysiwyg, ma forse basta cambiare il colore del testo di vari pezzi di testo; come la funzione @mention su Twitter o Facebook.Rich ReactNative TextInput
risposta
Per ottenere questo comportamento, è necessario utilizzare espressioni regolari. Qualcuno ha già creato un pacchetto per dare un'occhiata a react-native-parsed-text
Questa libreria consente di analizzare un testo ed estrarre parti utilizzando un RegExp o pattern predefiniti. Attualmente ci sono 3 tipi predefiniti: url, telefono ed e-mail.
Esempio dal loro github
<ParsedText
style={styles.text}
parse={
[
{type: 'url', style: styles.url, onPress: this.handleUrlPress},
{type: 'phone', style: styles.phone, onPress: this.handlePhonePress},
{type: 'email', style: styles.email, onPress: this.handleEmailPress},
{pattern: /Bob|David/, style: styles.name, onPress: this.handleNamePress},
{pattern: /\[(@[^:]+):([^\]]+)\]/i, style: styles.username, onPress: this.handleNamePress, renderText: this.renderText},
{pattern: /42/, style: styles.magicNumber},
{pattern: /#(\w+)/, style: styles.hashTag},
]
}
>
Hello this is an example of the ParsedText, links like http://www.google.com or http://www.facebook.com are clickable and phone number 444-555-6666 can call too.
But you can also do more with this package, for example Bob will change style and David too. [email protected]
And the magic number is 42!
#react #react-native
</ParsedText>
Questo aiuterà a far corrispondere i pattern digitati nel testo, ma la domanda era: come potrei cambiare lo stile di quel testo nell'input del testo? Come il modo in cui Facebook evidenzierà il nome della tua citazione con uno sfondo blu nel campo di testo stesso. – nicholas
Puoi farlo mettendo 'ParsedText' all'interno del componente' TextInput' e rimuovendo il valore '' '' 'di' TextInput', dopo che il figlio di 'ParsedText' deve solo essere impostato sul valore che hai impostato in' TextInput ', come quella: ' ''
Date un'occhiata alla TokenizedTextExample dalla documentazione reagire nativi. Penso che ti avvicineremo a quello che stai cercando di fare. Il codice in questione segue:
class TokenizedTextExample extends React.Component {
state: any;
constructor(props) {
super(props);
this.state = {text: 'Hello #World'};
}
render() {
//define delimiter
let delimiter = /\s+/;
//split string
let _text = this.state.text;
let token, index, parts = [];
while (_text) {
delimiter.lastIndex = 0;
token = delimiter.exec(_text);
if (token === null) {
break;
}
index = token.index;
if (token[0].length === 0) {
index = 1;
}
parts.push(_text.substr(0, index));
parts.push(token[0]);
index = index + token[0].length;
_text = _text.slice(index);
}
parts.push(_text);
//highlight hashtags
parts = parts.map((text) => {
if (/^#/.test(text)) {
return <Text key={text} style={styles.hashtag}>{text}</Text>;
} else {
return text;
}
});
return (
<View>
<TextInput
multiline={true}
style={styles.multiline}
onChangeText={(text) => {
this.setState({text});
}}>
<Text>{parts}</Text>
</TextInput>
</View>
);
}
}
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia – slfan
Grazie per il feedback. Ho aggiornato la risposta come suggerito. – jopecko
Whoa Non ho mai saputo che potresti mettere '
soluzione è che è possibile utilizzare <Text>
elementi come bambini in un <TextInput>
come questo:
<TextInput>
whoa no way <Text style={{color:'red'}}>rawr</Text>
</TextInput>
- 1. ReactNative TextInput placeholderTextColor sembra non funzionare
- 2. Cambiare textColor di <TextInput/> in ReactNative
- 3. WebStorm + ReactNative?
- 4. Firebase client su ReactNative
- 5. TextInput placeHolder Alignment
- 6. ReactNative: come centrare il testo?
- 7. React-native android Styling textInput
- 8. Rich Text Box - Grassetto
- 9. Rich text in textview
- 10. ReactNative onResponderRelease non funziona su Android
- 11. Come ottenere la data corrente in ReactNative?
- 12. ReactNative VS NativeScript: quali sono i vantaggi?
- 13. Come respingere modale toccando schermo nel ReactNative
- 14. TouchableOpacity non selezionabile mentre TextInput è attivo
- 15. Reagire nativo confine TextInput non funziona
- 16. React Native clear text multiple TextInput boxes
- 17. Come centralizzare il testo in textinput
- 18. Disegno rich text con QPainter
- 19. Quale piattaforma Rich Client utilizzare
- 20. Implementazione modello di dominio Rich
- 21. a4j: commandButton reRendering rich: datatable
- 22. Rich Domain Model e ORM
- 23. Rich Text Editing - designMode vs contentEditable
- 24. Impossibile aggiungere javascript all'editor rich text
- 25. Estendi editor rich text (Tridion 2011 SP1)
- 26. Aggiungere funzionalità rich text format Django TextField
- 27. Need ASP.Net/MVC Rich Text Editor
- 28. Proprietà webpart Sharepoint/casella di testo Rich?
- 29. MVVM: Thin ViewModels e Rich Models
- 30. WYSIWYG rich text editor che supporta diffs?
Hai capire una soluzione? Sto cercando di fare qualcosa di simile (più simile a un editor di testo avanzato con ** bolding **, _italics_, ecc.). – chapeljuice
No. Non ho mai trovato una soluzione. Nel mio caso stavo cercando di definire @menti con qualche tipo di contenitore o colore di sfondo nell'input. Finì solo rimuovendo quel testo dall'input e mettendolo in un'altra vista sopra. Non era l'ideale, ma ha funzionato. – nicholas
@chapeljuice solution found - https://stackoverflow.com/a/49082641/1828637 – Noitidart