Перенос значения текстовой области по умолчанию

#javascript #reactjs

#javascript #reactjs

Вопрос:

У меня есть текстовая область формы со значением по умолчанию, которое, к сожалению, иногда бывает довольно большим. Как я могу сделать так, чтобы форма была расширена до размера текста? Прямо сейчас моя форма ввода ADI усечена, поэтому я не могу видеть весь текст.

             <div style={{width: '50rem', margin: '1rem', overflow: 'auto'}}>
                <Header as='h2' textAlign='center' style={styles.mainHeader}>CMS View</Header>

                <Segment raised className='magentaSegment'>

                    <Form style={{paddingBottom: '2.5em'}} error={this.props.networksHasErrored}>
                        <Form.Group widths='equal'>
                        </Form.Group>
                        <Form.TextArea fluid label='ADI' value = {cmsObj.ADI}  style={styles.normalColor} />

                    </Form>
                </Segment>
            </div>
  

Ответ №1:

Вы можете использовать строки, столбцы и свойства переноса текстовой области. Вы можете установить фиксированные значения для строк и столбцов, а затем, если текст по-прежнему больше, чем заданная комбинация строк и столбцов, появится автоматическая полоса прокрутки.

Если вы хотите, чтобы ваша texarea увеличивалась в зависимости от текста, и не хотите полосу прокрутки, тогда вам нужно динамически задавать строки, вычисляя общее количество символов в тексте.

 function calculateRows(text){
  if(!text)
  return 1;

  return  Math.ceil(text.length/10);
}
const rows = calculateRows(text)
<textarea id="story" name="story" rows={rows} cols="10">