React Native控件之TextInput組件介紹以及實(shí)際登錄界面實(shí)現(xiàn)
(一)前言
這一篇文章講解一下文本輸入框TextInput組件使用講解以及模仿實(shí)現(xiàn)一下貴州銀行登錄界面效果。
TextInput組件允許用戶在應(yīng)用中通過(guò)鍵盤進(jìn)行輸入文本信息。并且該組件還提供了多種配置屬性:自動(dòng)拼寫修復(fù)、自動(dòng)大小寫切換、占位默認(rèn)字符設(shè)置以及多種不同類型的鍵盤切換(數(shù)字鍵盤與字母鍵盤等之間的切換)。
(二)基本使用
TextInput組件和前面講到的Image或者 Text組件差不多,用起來(lái)都很simple。我們直接在應(yīng)用中添加一個(gè)TextInput組件,然后給該組件添加相關(guān)屬性(例如:邊框顏色、粗細(xì)、背景、默認(rèn)值)以及監(jiān)聽方法(例如:剛輸入回調(diào)、輸入完成回調(diào)、焦點(diǎn)變化等事件)??匆幌鹿俜嚼樱?/p>
<View style={styles.TextInputContainer}>
<TextInput style={{borderWidth:1,borderColor:'red',height:40}}
onChangeText={ (text) => this.setState({text}) }
value={this.state.text}
/>
</View>
TextInputContainer:{
marginTop:20,
marginLeft:10,
marginRight:10,
backgroundColor:'white'
},
這個(gè)例子直接定義了TextInput組件,同時(shí)設(shè)置組件的風(fēng)格、高度、邊框粗細(xì)以及邊框顏色。而且,我們監(jiān)聽了TextInput的onChangeText事件來(lái)獲取用戶輸入信息。還有其他監(jiān)聽事件,例如onSubmitEditing(提交編輯)、onFoucs(輸入框獲取焦點(diǎn)的時(shí)候調(diào)用)等相關(guān)的監(jiān)聽方法。
接下來(lái)我們進(jìn)一步將例子加深:創(chuàng)建三個(gè)TextInput,同時(shí)每個(gè)TextInput都添加了默認(rèn)值,第一個(gè)TextInput組件設(shè)置高度40,邊框粗細(xì)和邊框的顏色,而且可以輸入多行信息。第二個(gè)TextInput設(shè)置左右額外邊距以及自動(dòng)獲取焦點(diǎn)。第三個(gè)TextInput設(shè)置不可輸入狀態(tài)。直接上代碼:
<View style={styles.TextInputContainer}>
<TextInput style={{height:40,borderColor:'green',borderWidth:1,marginTop:5}}
multiline={true}
defaultValue='默認(rèn)信息1'
/>
<TextInput style={{height:40,borderColor:'green',borderWidth:1,marginTop:5}}
autoFocus={true}
defaultValue='默認(rèn)信息2'
/>
<TextInput style={{height:40,borderColor:'green',borderWidth:1,marginTop:5}}
editable={false}
defaultValue='默認(rèn)信息3'
/>
</View>
運(yùn)行效果如下圖:

(三)屬性方法
名稱 |
作用 |
值 |
平臺(tái) |
View支持的相關(guān)屬性 |
一些基本屬性 |
官網(wǎng)鏈接 |
iOS、Android |
autoCapitalize |
自動(dòng)切換成大寫 |
enum(‘none’,’sentences’,’words’,’characters’) none:不自動(dòng)切換任何字符成大寫;sentences:默認(rèn)每個(gè)句子的首字母變成大寫;words:每個(gè)字母的首字母變成大寫;characters:每個(gè)字母全部變成大寫 |
iOS、Android |
autoCorrent |
設(shè)置拼寫自動(dòng)修正功能,默認(rèn)為開啟(true) |
bool |
iOS、Android |
autoFocus |
設(shè)置是否默認(rèn)獲取到焦點(diǎn),默認(rèn)為關(guān)閉(false),componentDidMount方法被調(diào)用之后才會(huì)獲取焦點(diǎn)(componentDidMount是React組件被渲染之后React系統(tǒng)回調(diào)的方法) |
bool |
iOS、Android |
defaultValue |
給文本輸入設(shè)置一個(gè)默認(rèn)初始值 |
string |
iOS、Android |
editable |
設(shè)置文本框是否可以編輯 |
bool |
iOS、Android |
keyboardType |
鍵盤類型:用來(lái)選擇默認(rèn)彈出鍵盤的類型,例如指定numeric就是彈出數(shù)字鍵盤。 |
‘default’, ‘email-address’, ‘numeric’, ‘phone-pad’, ‘a(chǎn)scii-capable’, ‘numbers-and-punctuation’, ‘url’, ‘number-pad’, ‘name-phone-pad’, ‘decimal-pad’, ‘twitter’, ‘web-search’,鑒于平臺(tái)的原因如下的值是所有平臺(tái)都可以進(jìn)行通用:default,numeric,email-address |
iOS、Android |
maxLength |
限制文本輸入框最大的輸入字符長(zhǎng)度 |
number |
iOS、Android |
multiline |
設(shè)置可以輸入多行文字,默認(rèn)為false(表示無(wú)論文本輸入多少,都是單行顯示) |
bool |
iOS、Android |
onBlur |
監(jiān)聽方法,文本框失去焦點(diǎn)回調(diào)方法 |
function |
iOS、Android |
onChange |
監(jiān)聽方法,文本框內(nèi)容發(fā)生改變回調(diào)方法 |
function |
iOS、Android |
onChangeText |
監(jiān)聽方法,文本框內(nèi)容發(fā)生改變回調(diào)方法,該方法會(huì)進(jìn)行傳遞文本內(nèi)容 |
function |
iOS、Android |
onEndEditing |
監(jiān)聽方法,當(dāng)文本結(jié)束文本輸入回調(diào)方法 |
function |
iOS、Android |
onFocus |
監(jiān)聽方法 文本框獲取到焦點(diǎn)回調(diào)方法 |
function |
iOS、Android |
onLayout |
監(jiān)聽方法 組價(jià)布局發(fā)生變化的時(shí)候調(diào)用,調(diào)用方法參數(shù)為 {nativeFunction:{x,y,width,height}} |
function |
iOS、Android |
onSelectionChange |
監(jiān)聽方法 當(dāng)Text input選中狀態(tài)被改變時(shí)調(diào)用 |
function |
iOS、Android |
onSubmitEditing |
監(jiān)聽方法,當(dāng)編輯提交的時(shí)候回調(diào)方法。不過(guò)如果multiline={true}的時(shí)候,該屬性就不生效 |
function |
iOS、Android |
placeholder |
當(dāng)文本輸入框還沒有任何輸入的時(shí)候,默認(rèn)顯示信息,當(dāng)有輸入的時(shí)候該值會(huì)被清除 |
string |
iOS、Android |
placeholderTextColor |
設(shè)置placeholderText顏色 |
string |
iOS、Android |
returnKeyType |
決定return鍵怎么顯示 |
enum(‘done’, ‘go’, ‘next’, ‘search’, ‘send’, ‘none’, ‘previous’, ‘default’, ‘emergency-call’, ‘google’, ‘join’, ‘route’, ‘yahoo’)。雙平臺(tái)適用:done、go、next、search、send;Android:none、previous;iOS:default、emergency-call、google、join、route、yahoo |
iOS、Android |
secureTextEntry |
設(shè)置是否為密碼安全輸入框 |
bool,默認(rèn)為false |
iOS、Android |
selectTextOnFocus |
如果為true,當(dāng)獲得焦點(diǎn),自動(dòng)選中所有文本 |
bool |
iOS、Android |
selectionColor |
輸入框文本的高亮顏色(iOS中包括光標(biāo)) |
string |
iOS、Android |
style |
風(fēng)格屬性,可以參考Text組件風(fēng)格 |
|
iOS、Android |
value |
|
string |
iOS、Android |
numberOfLines |
設(shè)置TextInput的行數(shù),multiline設(shè)置為true,并結(jié)合該屬性能夠滿足多行的TextInput |
number |
Android |
returnKeyLabel |
設(shè)置return鍵為文本組件,利用它替換returnKeyType |
string |
android |
underlineColorAndroid |
設(shè)置TextInput的下劃線顏色 |
string |
android |
clearButtonMode |
清除按鈕模式,設(shè)置何時(shí)應(yīng)該在TextInput右邊出現(xiàn)清除按鈕 |
enum(‘never’, ‘while-editing’, ‘unless-editing’, ‘a(chǎn)lways’) |
iOS |
clearTextOnFocus |
如果為true,當(dāng)編輯開始自動(dòng)清除TextInput文本內(nèi)容 |
bool |
iOS |
enablesReturnKeyAutomatically |
如果為true,當(dāng)沒有輸入文本鍵盤的return鍵自動(dòng)失效,當(dāng)輸入文本鍵盤的return鍵自動(dòng)生效,默認(rèn)值是false |
bool |
iOS |
keyboardAppearance |
設(shè)置鍵盤的顏色 |
enum(‘default’, ‘light’, ‘dark’) |
iOS |
onKeyPress |
當(dāng)任何一個(gè)鍵被按時(shí)調(diào)用,被按的鍵的值作為一個(gè)實(shí)參傳入function,在onChange被調(diào)用之前先執(zhí)行 |
function |
iOS |
selectionState |
請(qǐng)看DocumentSelectionState.js一些狀態(tài)負(fù)責(zé)維持一個(gè)文檔的選中信息(我也不懂什么意思,官網(wǎng)翻譯的。) |
DocumentSelectionState |
iOS |
(四)方法(Methods)
1.isFocused()
返回值是boolean,判斷當(dāng)前TextInput組件當(dāng)前是否獲得焦點(diǎn)
2.clear()
移除所有輸入的文本從TextInput組件。
(五)例子
|