Attualmente non esiste un modo semplice per ottenere la larghezza del contenuto interno di un TextInput
.
React Native ha un bisogno urgente di un inserimento di testo con autosizing come quello che descrivi. Potrei usarne anche uno, quindi quando trovo il tempo posso provare a scriverne uno.
Nel frattempo, ecco una soluzione per realizzare ciò che si descrive:
Creare la TextInput
con la sua iniziale di altezza (fissa).
Creare un clonato <Text>
elemento da qualche parte fuori campo (utilizzare ad esempio posizione assoluta) con lo stesso stile del TextInput
. Questo è facile da fare grazie alla natura dichiarativa dell'attributo React style
. Imposta la larghezza alla stessa larghezza del tuo TextInput
.
- Se il
TextInput
ha larghezza reattivo, si consiglia di guardare onLayout
, o measure
per ottenere la larghezza, altrimenti ci sono modi per rendere automatico il clone con la stessa larghezza (ad esempio posizionarlo nello stesso contenitore, ma fuori campo).
scrivere un gestore di onChange
per la TextInput
che: (a) gli aggiornamenti del clone qualunque momento il testo TextInput
cambia (b) misura l'altezza del clone (dal <Text>
elementi autosize) (c) imposta la nuova altezza del Textinput
Anche se questa è una specie di dolore, è sufficiente scrivere una volta. Può essere facilmente incapsulato in un componente (ad esempio) che è possibile riutilizzare con impunità.
ottiene il lavoro fatto in un pizzico. Grandi istruzioni, grazie! – Toadums