全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

React Native之TextInput组件解析示例

1 概述

TextInput组件和Text组件类似,内部都没有使用FlexBox布局,不同的是TextInput组件支持文字的输入,因为支持文字输入, TextInput组件要比Text组件多了一些属性和方法。TextInput组件支持Text组件所有的Style属性,而TextInput组件本身是没有特有的Style属性的。

2 属性

TextInput组件支持所有的View组件的属性,除此之外,它还有许多其他属性。

2.1 onChangeText

当输入框的内容发生变化时,就会调用onChangeText。

index.Android.js

import React, {Component} from 'react';
import {AppRegistry, StyleSheet, View, TextInput, Button,Alert} from 'react-native';
class TextApp extends Component {
  constructor(props) {
    super(props);
    this.state = {
      searchText: ""
    }
  }
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.searchBar}>
          <TextInput style={styles.input} placeholder='请输入内容'
                onChangeText={(text) => {
                  this.setState({searchText: text});
                }}/>
          <Button style={styles.button} title='搜索'
              onPress={ () => {
                Alert.alert('输入的内容为:' + this.state.searchText);
              }
              }/>
        </View>
      </View>
    );
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  searchBar: {
    flexDirection: 'row',
    height: 45,
    justifyContent: 'center',
    alignItems: 'center'
  },
  input: {
    flex: 1,
    borderColor: 'gray'
  },
  button: {
    flex: 1
  }
});
AppRegistry.registerComponent('ViewSample', () => TextApp);

上面的例子我们用到了TextInput组件的onChangeText属性,当我们在TextInput中输入内容时,这个内容就会通过onChangeText的参数text传递回来,在onChangeText中将text的内容保存到state中。当我们点击Button时,通过Alert将state中保存的内容展现出来。

运行程序效果如下图所示。

在输入框中输入android,点击搜索Button,可以看到输入的Android展示到了Alert中。

 

2.2 onChange

当输入框的内容发生变化时,也会调用onChange,只不过它所返回的参数是一个event,我们来改写2.1的代码:

...
 <TextInput style={styles.input} placeholder='请输入内容' keyboardType='default'
                onChange={(event) => {
                  this.setState({searchText: event.nativeEvent.text});
                }}/>
...                
 

通过event.nativeEvent.text可以得到用户输入的内容,如果只是想要得到用户输入的内容,还是用onChangeText比较合适。

2.3 keyboardType

keyboardType用于设置弹出软键盘的类型。它的取值为范围为: enum(‘default', ‘email-address', ‘numeric', ‘phone-pad', ‘ascii-capable', ‘numbers-and-punctuation', ‘url', ‘number-pad', ‘name-phone-pad', ‘decimal-pad', ‘twitter', ‘web-search') ,其中default、numeric、email-address和phone-pad是跨平台。

...
 <TextInput style={styles.input} placeholder='请输入内容' keyboardType='phone-pad'
                onChangeText={(text) => {
                  this.setState({searchText: text}); 
                }}/>
...  

将keyboardType的值设置为phone-pad,效果如下图所示。

2.4 blurOnSubmit

如果blurOnSubmit值为true,文本框会在按下提交键时失去焦点。对于单行输入框,blurOnSubmit默认值为true,多行则为false。

在单行的情况下,点击键盘上的提交按钮时,TextInput的效果如下图所示。

  

将blurOnSubmit设置为false:

...
 <TextInput style={styles.input} placeholder='请输入内容' blurOnSubmit={false} 
                onChangeText={(text) => {
                  this.setState({searchText: text});
                }}/>
... 

点击键盘上的提交按钮时,TextInput的效果如下图所示。

 

2.5 onSubmitEditing

当提交键被按下时会调用onSubmitEditing,如果multiline等于true,则此属性不可用。

...
 <TextInput style={styles.input} placeholder='请输入内容' blurOnSubmit={true} multiline={false}
                onChangeText={(text) => {
                  this.setState({searchText: text});
                }}
                onSubmitEditing={(event) => {
                  console.log(event.nativeEvent.text);
                }}
          />
...         

运行程序并在App的开发菜单中选择Debug JS Remotely,这时我们输入Android并按下提交键,在Console控制台中就会输出结果。(笔者用的是WebStorm)

2.6 returnKeyType

用于设置软键盘回车键的样式,Android平台可以使用returnKeyLabel来设置软键盘回车键的内容。

returnKeyType的取值为enum(‘done', ‘Go', ‘next', ‘search', ‘send', ‘none', ‘previous', ‘default', ‘emergency-call', ‘google', ‘join', ‘route', ‘yahoo')。

其中跨平台的取值有:done、next、search、send。

Android平台独有:none、previous。

iOS平台独有:default、emergency-call、google、join、route、yahoo。

如果我们将returnKeyType设置为go时,效果如下图所示。

returnKeyType设置为send时,效果如下图所示。

 

2.7 其他跨平台属性

属性名 取值 说明
autoCapitalize enum(‘none', ‘sentences', ‘words', ‘characters') 设置英文字母自动大写规则,取值分别表示:不自动大写、每句话首字母自动大写、每个单词首字母大写、全部字母自动大写
autoCorrect bool 是否会自动检测用户输入的英语单词正确性,默认值为true
autoFocus bool 如果为true,在componentDidMount后会获得焦点。默认值为false。
defaultValue string 字符初始值,当用户开始输入时,该值将改变
placeholder node 文本输入之前将呈现的字符串,多用于提示用户应该输入什么
placeholderTextColor color 文本输入之前将呈现的字符串的颜色
editable bool 是否允许修改字符,默认值为true
maxLength number 最多允许用户输入多少字符
caretHidden bool 如果为true,则隐藏光标
multiline bool 如果为true,则文本输入可以是多行的,默认值为false
secureTextEntry bool 文本框是否用于输入密码,默认值为false
selectTextOnFocus bool 如果为true,则文本框获取焦点时,组件中的内容会被自动选中
onFocus function 当文本框获得焦点的时候调用此回调函数
onEndEditing function 当文本输入结束后调用此回调函数
onLayout function 当组件挂载或者布局变化的时候调用,参数为{x, y, width, height}
onScroll function 在内容滚动时持续调用,传回参数的格式形如{ nativeEvent: { contentOffset: { x, y } } }
onSelectionChange function 长按选择文本时,选择范围变化时调用此函数,传回参数的格式形如 { nativeEvent: { selection: { start, end } } }
value string 文本框中的文字内容

2.8 Android平台独有属性

属性名 取值 说明
inlineImageLeft string 指定一个图片放置在左侧
inlineImagePadding number 左侧图片的Padding(如果有的话),以及文本框本身的Padding
numberOfLines number TextInput的行数
underlineColorAndroid string TextInput的下划线颜色
returnKeyLabel string 设置软键盘回车键的内容,优先级高于returnKeyType
disableFullscreenUI bool 值为false时(默认值),如果TextInput的输入空间小,系统可能会进入全屏文本输入模式

2.9 iOS平台独有属性

属性名 取值 说明
clearButtonMode enum(‘never', ‘while-editing', ‘unless-editing', ‘always') 何时在文本框右侧显示清除按钮
clearTextOnFocus bool 如果为true,每次开始输入的时候都会清除文本框的内容
keyboardAppearance enum(‘default', ‘light', ‘dark') 键盘的颜色
onKeyPress function 一个键被按下的时候调用此回调,传递给回调函数的参数为{ nativeEvent: { key: keyValue } }
spellCheck bool 如果为false,则禁用拼写检查的样式(比如红色下划线)
enablesReturnKeyAutomatically bool 如果为true,键盘会在文本框内没有文字的时候禁用确认按钮 ,默认值为false

3 方法

clear()

clear用于清空输入框的内容。

想要使用组件的方法则需要使用组件的引用,例子如下所示。

...
render() {
    return (
      <View style={styles.container}>
        <View style={styles.searchBar}>
          <TextInput style={styles.input} ref="textInputRefer" placeholder='请输入内容' blurOnSubmit={true}
                returnKeyType='send'
                onChangeText={(text) => {
                  this.setState({searchText: text});
                }}
          />
          <Button style={styles.button} title='清除'
              onPress={ () => {
                this.refs.textInputRefer.clear();
              }
              }/>
        </View>
      </View>
    );
  }
 ...  

在TextInput标签中定义引用的名称:ref="textInputRefer",这样我们通过 this.refs.textInputRefer就可以得到TextInput 组件的引用。在Button的onPress函数中,调用了TextInput的clear方法,这样当我们点击“清除”按钮时,文本框中的内容就会被清除。

isFocused(): boolean

返回值表明当前输入框是否获得了焦点。

好了,到这里TextInput组件就介绍到这里,还有一些没有列出的属性请查看官方文档。希望对大家的学习有所帮助,也希望大家多多支持。


# React  # Native  # TextInput组件  # 可定制react18 input otp 一次性密码输入组件  # React获取input值并提交的2种方法实例  # react获取input输入框的值的方法示例  # 在react项目中使用antd的form组件  # 动态设置input框的值  # React-Native TextInput组件详解及实例代码  # react Input组件Compositionstart和Compositionend事  # 值为  # 所示  # 文本框  # 请输入  # 就会  # 如下图  # 输入框  # 按下  # 设置为  # 回调  # 回车键  # 的是  # 当我们  # 下划线  # 会在  # 前将  # 框中  # 形如  # 首字母  # 是一个 


相关文章: 如何在香港服务器上快速搭建免备案网站?  建站之星如何助力企业快速打造五合一网站?  网站制作的步骤包括,正确网址格式怎么写?  常州自助建站费用包含哪些项目?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  建站之星备案是否影响网站上线时间?  电商平台网站制作流程,电商网站如何制作?  建站VPS推荐:2025年高性能服务器配置指南  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何彻底卸载建站之星软件?  如何登录建站主机?访问步骤全解析  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  企业微网站怎么做,公司网站和公众号有什么区别?  如何注册花生壳免费域名并搭建个人网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何快速生成可下载的建站源码工具?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何快速生成橙子建站落地页链接?  家具网站制作软件,家具厂怎么跑业务?  音乐网站服务器如何优化API响应速度?  如何破解联通资金短缺导致的基站建设难题?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  建站主机空间推荐 高性价比配置与快速部署方案解析  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何通过二级域名建站提升品牌影响力?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何在Ubuntu系统下快速搭建WordPress个人网站?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  广州商城建站系统开发成本与周期如何控制?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何快速选择适合个人网站的云服务器配置?  一键网站制作软件,义乌购一件代发流程?  制作网站的软件免费下载,免费制作app哪个平台好?  建站之星上传入口如何快速找到?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何在IIS中新建站点并配置端口与IP地址?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站主机服务器选型指南与性能优化方案解析  如何快速搭建高效WAP手机网站?  如何正确选择百度移动适配建站域名?  如何用PHP快速搭建高效网站?分步指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。