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小时内与您取得联系。