从零学React Native之11 TextInput

简介: TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式。 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本布局。详情见上一篇文章从零学React Native之10TextTextInput属性只列出了一些常用的,详情见官网属性名 描述default

TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式。
与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本布局。详情见上一篇文章从零学React Native之10Text

TextInput属性

只列出了一些常用的,详情见官网

属性名 描述
defaultValue 字符类型,定义TextInput组件中的字符串默认值
autoCorrect 布尔类型,是否自动更正用户输入,默认是true
autoFocus 是否自动获取焦点,默认为false
editable 布尔类型,是否允许修改组件内字符,false代表不能修改
keyboardType 字符串类型,取值包括’default’, ‘email-address’, ‘numeric’, ‘phone-pad’, ( ‘ascii-capable’, ‘numbers-and-punctuation’, ‘url’, ‘number-pad’, ‘name-phone-pad’, ‘decimal-pad’, ‘twitter’, ‘web-search’)括号里的只支持ios平台
MaxLength 数值类型,定义TextInput最多允许用户输入多少个字符
multiline 布尔类型,是否允许多行显示,默认值false
placeholder TextInput无文字的时候显示的提示内容
placeholderTextColor placeholder文字颜色,建议不用修改
secureTextEntry 布尔类型 true按照密码样式显示,默认是false
value 字符串类型,设置TextInput里面的值,目前有可能带来屏幕闪烁,可以用defaultValue临时代替
onSubmitEditing 用户点击提交键的时候调用,如果允许多行显示,该属性失效
onContentSizeChange 内容长度发生变化的时候,只会在多行显示的时候生效
onChangeText 内容长度发生变化的时候调用

下面的例子

class UselessTextInput extends Component {
  constructor(props) {
    super(props);
    this.state = { text: 'Useless Placeholder' };
  }

  render() {
    return (
      <TextInput
        style={{marginTop:100,height: 40, borderColor: 'gray', borderWidth: 1}}
        onChangeText={(text) => this.setState({text})}
        value={this.state.text}
      />
    );
  }
}

// App registration and rendering
AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);

IOS运行结果:

ios运行结果

Android运行结果:
Android运行结果

两个平台不同表现

对比发现 Android端 borderWidth是不生效的,默认有一个输入的线,符合Android设计,Android字体默认很小,我们把上面样式中的height换成fontSize,来看下

<TextInput
   style={{marginTop:100,fontSize: 40, borderColor: 'gray', borderWidth: 1}}
   onChangeText={(text) => this.setState({text})}
   value={this.state.text}/>

可以看到Android端字体变大了,但是IOS端没有了

左面是IOS右面Android
左面是IOS右面Android
IOS平台上,没有指定height,TextInput组件不会显示。
一般情况下,我们需要指定FontSize和height,当上下padding为0的时候,height至少是FontSize的1.1倍时Android端才能保证字体完全显示。而默认Android端是有padding的。
如下面的代码可以基本适配两个平台:

    render() {
        return (
            <TextInput
                style={{marginTop:100,
                fontSize:30,height:43, 
                borderColor: 'gray', borderWidth: 1,
                paddingBottom:5,paddingTop:5}}
                onChangeText={(text) => this.setState({text})}
                value={this.state.text}
            />
        );
    }

TextInput组件的生命周期和回调方法

  1. 当用户点击输入框时,onFocus调用,获取焦点
  2. 当用户输入的时候onChangeText和onChange回调,一般使用onChangeText,里面参数为输入的文本
  3. 当用户按下提交键,onSubmitEditing回调,多行没有提交键
  4. 当组件失去焦点,onEndEditing或onBlur调用,一般情况用onEndEditing就足够了

注意:当点击点击另一个TextInput组件时会触发失去焦点事件,在单行的输入框中按下提交键,Android端不触发失去焦点事件。

最方便的操作就在onChangeText事件中时刻获取用户输入的内容

更多精彩请关注微信公众账号likeDev
这里写图片描述

相关文章
|
2月前
|
开发框架 前端开发 JavaScript
探索前端开发中的跨平台框架React Native
本文将介绍前端开发中一种备受关注的跨平台框架React Native,通过比较原生应用与React Native的优缺点,探讨其在实际项目中的应用以及未来发展趋势。
|
2月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
3月前
|
前端开发 JavaScript Android开发
跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制
跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制
|
2月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
2月前
|
前端开发 IDE 小程序
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
34 0
|
3月前
|
移动开发 前端开发 JavaScript
探究移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动端混合开发技术在移动应用开发领域日益流行,为开发者提供了更高效的跨平台开发方案。本文将比较三种主流混合开发技术:React Native、Weex和Flutter,从性能、生态系统和开发体验等方面进行评估,以帮助开发者在选择适合自己项目的技术时做出明智的决策。
|
3月前
|
移动开发 前端开发 weex
React Native、Weex、Flutter 混合开发技术的比较与选择
移动应用已经成为人们日常生活中不可或缺的一部分,而混合开发技术也随之崛起并逐渐成为主流。本文将比较 React Native、Weex 和 Flutter 三种混合开发技术,并探讨它们各自的优缺点,以及如何根据项目需求做出选择。
47 1
|
3月前
|
开发框架 Dart 前端开发
Flutter vs React Native:跨平台移动应用开发的终极对决
随着移动应用的普及,跨平台移动应用开发成为了一种趋势。Flutter和React Native是当前最受欢迎的跨平台开发框架之一,但它们各自有着不同的特点和优势。本文将对Flutter和React Native进行全方位比较,以帮助开发者了解两个框架的差异,从而选择适合自己的开发工具。
37 3
|
3月前
|
开发框架 前端开发 JavaScript
react native是什么,怎么用
react native是什么,怎么用
43 0
|
3月前
|
移动开发 前端开发 weex
移动端混合开发技术:React Native、Weex、Flutter 之争
在移动应用开发领域,React Native、Weex 和 Flutter 是备受关注的混合开发技术。本文将对它们进行全面比较与评估,以帮助开发者做出明智的选择。我们将从开发生态、性能、跨平台能力和易用性等方面进行比较,为读者提供全面的参考和指导。