2017-01-16 3 views
11

Есть ли встроенный компонент текстовой области для реагирования? Я пытался реализовать эти из них:Что такое альтернатива textarea в реакции-родной?

https://github.com/buildo/react-autosize-textarea

https://github.com/andreypopp/react-textarea-autosize

, но получаю сообщение об ошибке «Прогнозный класс компонент получил объект объект».

ответ

22

Да, есть. Он называется TextInput, обычный компонент TextInput поддерживает несколько строк.

Просто назначить следующие свойства для вашего TextInput компонента

multiline = {true} 
numberOfLines = {4} 

В конце концов, вы должны иметь это:

<TextInput 
    multiline={true} 
    numberOfLines={4} 
    onChangeText={(text) => this.setState({text})} 
    value={this.state.text}/> 
2

Я использую этот компонент: https://www.npmjs.com/package/react-native-autogrow-textinput

Он расширяется автоматически рост. Я создал свой собственный многоразовый компонент с автоприращением-TextInput как часть его, которая внутри компоненты выглядит следующим образом:

<AutoGrowingTextInput 
    minHeight={40} 
    maxHeight={maxHeight} // this is a flexible value that I set in my 
    component, where I use this reusable component, same below, unless 
    specified the other 
    onChangeText={onChangeText} 
    placeholder={placeholder} 
    placeholderTextColor='#C7C7CD' 
    style={inputStyle} 
    value={value} 
/> 
0

Если вы используете реагировать только родную компоненту вашего опция TextInput

как " funkysoul»объяснил:

Просто назначить следующие свойства к TextInput Компонент

multiline = {true}
numberOfLines = {4}

Если вы хотите увидеть этот компонент в качестве классического textarea (больше, чем инлайн ввода текста), как правило, нужно будет добавить стиль-свойство height. Смотрите следующий пример:

<TextInput 
    multiline={true} 
    numberOfLines={10} 
    style={{ height:200, backgroundColor:'red'}} 
/> 

Я добавил BackgroundColor для лучшего понимания роли height. Не используйте его в своем проекте;)

Смежные вопросы