ReactNative 之 TextInput 组件介绍

简书 i蒹葭从风
转载请注明原创出处,谢谢!
如果读完觉得有收获的话,欢迎点赞加关注

最近公司的App开始用ReactNative 一下简称RN重构了,首先我们是拿首页开刀的,其实之前有一个优惠券列表页面已经用ReactNative实现了,不过访问量实在是太小了,看不出RN和Hybrid App 的优缺点,所以这次用了首页来重构。
其中首页包含一下几部分,搜索框,广告banner,品类,我附近,营销广告位,人气榜,还有未截图的猜你喜欢模块。


首页

这篇文章,先来介绍textinput的使用,就拿搜索框来举例吧。
通过官方文档可以看出TextInput 的定义,官方文档上说明:TextInput是一个允许用户在应用中通过键盘输入文本的基本组件。本组件的属性提供了多种特性的配置,譬如自动完成、自动大小写、占位文字,以及多种不同的键盘类型(如纯数字键盘)等等。下面枚举一些属性。

autoCapitalize

enum('none', 'sentences', 'words', 'characters')
控制TextInput 是否要自动将特定字符切换为大写。

autoCorrect bool

如果为false,会关闭拼写自动修正,默认为true

blurOnSubmit bool

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

注意:对于多行输入框来说,如果将blurOnSubmit设为true,则在按下回车键时就会失去焦点同时触发onSubmitEditing事件,而不会换行。

defaultValue string

提供一个文本框的初始值,当用户开始输入的时候,值就开始改变

editable bool

如果为false,则文本框不可编辑,默认为true

keyboardType enum

枚举类型
enum("default", 'numeric', 'email-address', "ascii-capable", 'numbers-and-punctuation', 'url', 'number-pad', 'phone-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search') #
这个属性决定弹出的何种软键盘,譬如numeric就是纯数字键盘。
一下几个值是所有平台都可以使用的,
default
numeric
email-address

maxLength number

限制文本框最多字符数。

multiline bool

如果为true文本框可以输入多行文字,默认为false

onBlur function

当文本失去焦点的时候,触发此回调函数

onChange function

当文本框发生变化的时候,调用此函数

onChangeText function

当文本框内容变化时,调用此函数,改变后的文字内容会作为内容参数传递
仔细看看和onChange 之间的区别

onEndEditing function

当文本输入结束后调用此函数

onFocus function

当文本获得焦点的时候,调用此函数

onLayout function

当组件挂载或者布局发生变化的时候调用

onSubmitEditing

此回调函数当软键盘的回车键按下的时候触发。如果multiline=true的时候此属性不可用

placeholder

如果没有任何文字输入,会显示此字符

placeholderTextColor

占位符显示文字的颜色

returnKeyType enum

enum('done', 'go', 'next', 'search', 'send', 'none', 'previous', 'default', 'emergency-call', 'google', 'join', 'route', 'yahoo')
决定“回车”按钮显示的内容
一下几个跨平台兼容
done
go
next
search
send

enablesReturnKeyAutomatically

如果为true,键盘会在文本框内没有文字的时候禁用确认按钮。默认值为false。

好了说了以上那么多的属性,还有2个静态方法

isFocused ()

clear()

这个两个静态方法的使用很简单,获取textinput组件,然后直接使用。比如

<TextInput
    ref='TextInput'
    ...
    ...
/>

要是获取TextInput 组件可以用this.refs.TextInput.isFocused(),或者要清除输入框内容的话,就可以用this.refs.TextInput.clear()就可以把内容清除掉。

失去焦点

接下来说一下,如果使TextInput 组件失去焦点,其实RN不像web开发一样,web开发,点击input 框外面就会把input 框失去焦点,而RN则不会触发失去焦点的事件。那么怎么才能使TextInput 框失去焦点呢,其实RN提供了一个Keyboard 组件,
这个组件也提供了一个静态方法Keyboard.dismiss();就可以使键盘隐藏,同时失去焦点,是不是很简单。

输入框内容闪动

看一下这个例子

<TextInput
    ref='TextInput'
    onFocus={this.onFocus.bind(this)}
    onChangeText={this.onChangeText.bind(this)}
    value={this.state.value}
    ....
    />

onChangeText(text){
    this.setSate({
        value:text
    });
}

这个简单的伪代码,相信大家会这样写。这样写在不经过http请求的时候,会没什么问题,如果你的state要经过http请求,比如搜索联想词,那么你会发现你输入的内容会闪动,因为,你输入的a,在经过render之后,TextInput 组件又重现渲染了一次,所以value这个会闪动,尤其是网络情况不好的状态下,更为明显。那么怎么解决这个问题呢,那就是TextInput不写value这个属性,如果不写这个属性,而又想拿到输入的值,有很多种办法,其一是放进state,其二是把onChangeText的时候,保存起来,这样就不会出现闪动的情况了。

目前先大致了解一下TextInput这个组件,先挖个坑,下一篇文字会介绍一下,自动联想词这个功能怎么实现。

如果读完觉得有收获的话,欢迎点赞加关注
您的认可是我写作的最大动力

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容