React-Native进阶_7.TextInput的使用实现搜索功能
前面使用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效果展示:
React-Native进阶_7.TextInput的使用实现搜索功能的更多相关文章
- React Native 组件之TextInput
React Native 组件之TextInput类似于iOS中的UITextView或者UITextField,是作为一个文字输入的组件,下面的TextInput的用法和相关属性. /** * Sa ...
- 从零学React Native之11 TextInput
TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式. 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本 ...
- react native进阶
一.前沿||潜心修心,学无止尽.生活如此,coding亦然.本人鸟窝,一只正在求职的鸟.联系我可以直接微信:jkxx123321 二.项目总结 **||**文章参考资料:1. http://blog ...
- React Native 接入微博、微信、QQ 登录功能
在 App 开发中我们经常需要在用户登录模块接入 SNS 登录组件,这样会大大提高用户的注册体验.特别当一个不是刚性需求 App 推广的时候,这样会很大的降低用户体验的成本,没有人愿意忍受输入邮箱.手 ...
- 教你轻松在React Native中集成统计(umeng)的功能(最新版)
关于在react-native中快速集成umeng统计,网上的文章或者教程基本来自----贾鹏辉老师的文章http://www.devio.org/2017/09/03/React-Native-In ...
- React Native随笔——组件TextInput
一.实例 先看一下我要做的搜索框的样子 需要一个Image,和一个TextInput 去掉默认下划线 underlineColorAndroid='transparent' 设置光标颜色 select ...
- (转)React Native 使用react-native-image-picker库实现图片上传功能
react-native-image-picker作为一个集成相机和相册的功能的第三方库,因为其使用相对简单受到前端开发人员的喜爱. react-native-image-picker使用 首先,安装 ...
- [React Native]高度自增长的TextInput组件
之前我们学习了从零学React Native之11 TextInput了解了TextInput相关的属性. 在开发中,我们有时候有这样的需求, 希望输入区域的高度随着输入内容的长度而增长, 如下: 这 ...
- React Native 学习笔记--进阶(二)--动画
React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...
随机推荐
- Codeforces679E. Bear and Bad Powers of 42
传送门 今天子帧的一套模拟题的T3. 考试的时候其实已经想到了正解了,但是一些地方没有想清楚,就没敢写,只打了个暴力. 首先考虑用线段树维护区间信息. 先把每个值拆成两个信息,一是距离他最近的且大于他 ...
- BootStrap实现图片轮播
<div class="container"> <div data-ride="carousel" id="carou ...
- prometheus statsd 监控
Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们 ...
- POJ2159 ancient cipher - 思维题
2017-08-31 20:11:39 writer:pprp 一开始说好这个是个水题,就按照水题的想法来看,唉~ 最后还是懵逼了,感觉太复杂了,一开始想要排序两串字符,然后移动之类的,但是看了看 好 ...
- ThinkPHP开发笔记-用户登录注册
1.修改模块配置,Application/当前模块名/Conf/config.php <?php return array( //数据库配置信息 'DB_TYPE' => 'mysql', ...
- [spring]<context:property-placeholder/>
问题: 有些参数在某些阶段中是常量,这些参数在不同阶段之间又往往需要改变,如: 在开发阶段我们连接数据库时的url,username,password等信息 分布式应用中client端的server地 ...
- 初识HTML和CSS2
上节作业问题: 1.css重用 <style> 如果整个页面的宽度 > 900px时: { .c{ 共有 } .c1{ 独有 } } .c2{ 独有 } </style> ...
- Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet
JsonNet-PHP 是 Google Jsonnet 对 PHP的支持扩展. pecl: http://pecl.php.net/package/jsonnet github: https://g ...
- customs event
// First create the event var myEvent = new CustomEvent("userLogin", { detail: { username: ...
- Linux常用插件
文件传输 虚拟机用xshell连接时,拖拽传输插件 yum install lrzsz setup界面化工具 yum install setuptool yum install ntsysv # ...