上一篇解釋了一下State语淘,這一篇趁熱打鐵說一下TextInput侥猩,因為TextInput的使用離不開State(其實好多組件都離不開)籽前。
TextInput字面翻譯為文字輸入种冬,其實他的作用就是接受用戶輸入的文本信息,就好像是Android中的EditText粗井。
還是來看例子
class MyTextInput extends Component{
constructor(props) {
super(props);
this.state = {text:''};
}
render() {
return (
<View style={{padding:10}}>
<TextInput
style={{height:40}}
placeholder="單擊這里輸入文本"
onChangeText={(text)=>this.setState({text})}>
</TextInput>
<Text>{this.state.text}</Text>
</View>
);
}
}
我們自定義了一個MyTextInput組件
在MyTextInput的構造函數(shù)中聲明了一個名為text的state尔破,在render函數(shù)中的TextInput 下有一個placeholder屬性,這個屬性設置的是沒有信息輸入時默認顯示的文本浇衬,蕾西EditText的android:holder屬性懒构,此外還有一個onChangeText屬性,當用戶輸入的信息改變時this.setState會把當前用戶輸入的文本賦值給this.state.text耘擂。所以我們在TextInput節(jié)點后又增加了一個Text胆剧,用于顯示this.state.text的值。具體運行效果如下:
以上就是TextInput的最基本使用方法醉冤,下面再看看TextInput的其他幾個重要Propes
1. value
value的作用是強制設定TextInput的值并且處于不可編輯狀態(tài)秩霍,在某些項目中可能會使用到,但是在我測試過程中模擬器和真機都出現(xiàn)了閃爍的情況蚁阳,官網(wǎng)針對這種情況也做了說明铃绒,所以官網(wǎng)建議如果需要TextInput處于不可編輯狀態(tài)可以設置editable={false}或者通過maxLength 限定TextInput的輸入長度來達到目的。這里不再用代碼說明螺捐。
2. keyboardType
設定鍵盤的類型颠悬,官方提供了多種設定值矮燎,但某些值只準對特定平臺生效,不受平臺限制的有一下四種
- default ——默認的輸入類型
- numeric——數(shù)字鍵盤
- email-address
- phone-pad
<TextInput
placeholder="單擊這里輸入文字"
onChangeText={(text)=>this.setState({text})}
keyboardType="numeric"
>
</TextInput>
3. multiline
如果值為真椿疗,文本輸入可以輸入多行漏峰,默認值為假糠悼。
<TextInput
placeholder="單擊這里輸入文字"
onChangeText={(text)=>this.setState({text})}
multiline = {true}
>
</TextInput>
實際測試過程中發(fā)現(xiàn)這樣一個問題届榄,在multiline 為true的情況下按回車鍵軟鍵盤被收起并沒有切換到下一行,只有當當前行顯示不下才會自動切換到下一行去倔喂。
其他的的Propes大家自行去官網(wǎng)查看吧铝条,這里不再啰嗦了。