React-Native进阶_7.TextInput的使用实现搜索功能
程序员文章站
2022-03-11 15:43:38
...
前面使用TabBar 实现了底部tab标签,通过stackNavigator 实现了页面跳转,接下来,使用TextInput 来实现一个搜索功能。
TextInput 属性比较多,不一一介绍,具体可以百度搜索或者结合源码。
下面介绍介个比较常用的属性
<TextInput
style={{height:50}}
placeholder ="搜索 ..."// = android EditText hint
placeholderTextColor="#6435c9"// = hint color
underlineColorAndroid='transparent'// 下划线透明
// clearButtonMode="while-editing"
onChangeText={(query) =>{
this.setState({
query:query,
loaded:false,
});// 当内容改变时执行该方法
}}
onSubmitEditing={this.fetchData.bind(this)}
//secureTextEntry
// onFocus={() =>console.log('onFocus')} //选中文本框
// onBlur={() =>console.log('onBlur')}//离开文本框
// onChange={() =>console.log('onChange')}//文本框内容变化
// onChangeText={(text) =>console.log(text)}//文本框内容变化,变化的内容
// onEndEditing={() =>console.log('onEndEditing')}//文本框编译结束
// onSubmitEditing={() =>console.log('onSubmitEditing')}//按下回车键
// autoFocus
// defaultValue="火星救援"
// autoCorrect={false}
//editable={false}
//keyboardType='url' web-search
/>
实现思路跟前面两个页面一样,集合TabBar 在主页面,添加第三个底部tab标签 搜索标签,搜索页面使用TextInput 实现输入框功能
输入框中输入能容点击回车 跳转到搜索结果列表页,由前面的 stackNavigator 实现 ,点击列表页,跳转到详情页,也是由stackNavigator实现。
const App = StackNavigator({
Main: {screen: SearchForm, navigationOptions: {
title: "搜索",
headerLeft: null,
headerStyle:{
elevation: 0
},
headerTitleStyle:{ alignSelf:'center'},
},},
//搜索结果列表
SearchResult: {screen: SearchResult,
navigationOptions:({navigation,screenProps}) =>({
headerTitle: navigation.state.params.title,
}
)
},
//详情页
Detail: {screen: MovieDetail,
navigationOptions:({navigation,screenProps}) =>({
headerTitle: navigation.state.params.info,
}
)
},
});
展示UI跟前面的列表相同由ListView 实现。
render() {
return (
<View style={styles.Container}>
<TabNavigator>
<TabNavigator.Item
selected={this.state.selectedTab === 'home'}
title="推荐电影"
renderIcon={() => <Image source={TAB_NORMAL_1} style={styles.icon}/>}
renderSelectedIcon={() => <Image source={TAB_PRESS_1} style={styles.icon}/>}
badgeText="1"
onPress={() => this.setState({selectedTab: 'home'})}>
<Feature/>
</TabNavigator.Item>
<TabNavigator.Item
selected={this.state.selectedTab === 'profile'}
title="北美票房"
renderIcon={() => <Image source={TAB_NORMAL_2} style={styles.icon}/>}
renderSelectedIcon={() => <Image source={TAB_PRESS_2} style={styles.icon}/>}
onPress={() => this.setState({selectedTab: 'profile'})}>
<USBox/>
</TabNavigator.Item>
<TabNavigator.Item
renderIcon={() => <Image source={{uri:icons.search}} style={styles.icon}/>}
selected={this.state.selectedTab === 'search'}
title="搜索"
onPress={() => this.setState({selectedTab: 'search'})}>
<Search/>
</TabNavigator.Item>
</TabNavigator>
</View>
);
}
UI效果展示:
不论大神还是新手,欢迎加QQ群一起讨论问题学习技术:230274309
推荐阅读
-
使用ElasticSearch6.0快速实现全文搜索功能的示例代码
-
使用bootstrap实现下拉框搜索功能的实例讲解
-
python使用正则表达式的search()函数实现指定位置搜索功能
-
Java 进阶使用 Lambda 表达式实现超强的排序功能
-
vue输入框使用模糊搜索功能的实现代码
-
在 Laravel 中使用 Laravel Searchy 扩展包实现基于数据库的轻量级搜索功能
-
使用ElasticSearch6.0快速实现全文搜索功能的示例代码
-
使用bootstrap实现下拉框搜索功能的实例讲解
-
Java 进阶使用 Lambda 表达式实现超强的排序功能
-
python使用正则表达式的search()函数实现指定位置搜索功能