基于React Native构建的仿京东客户端(五)如何实现首页 分类 发
发布时间:2020-12-15 06:29:11 所属栏目:百科 来源:网络整理
导读:新建4个用红色方框标识的文件,如下图所示: myths-Mac:JdApp myth$ yarn add react-native-tab-navigator CartPage.js文件完整的代码如下: import React,{ Component } from 'react';import { StyleSheet,Text,View} from 'react-native';export default c
新建4个用红色方框标识的文件,如下图所示: myths-Mac:JdApp myth$ yarn add react-native-tab-navigator CartPage.js文件完整的代码如下: import React,{ Component } from 'react'; import { StyleSheet,Text,View } from 'react-native'; export default class CartPage extends Component { render() { return ( <View style={styles.container}> <Text>CartPage</Text> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',} }); CategoryPage.js文件完整的代码如下: import React,View } from 'react-native'; export default class CategoryPage extends Component { render() { return ( <View style={styles.container}> <Text>CategoryPage</Text> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1,} }); DiscoverPage.js文件完整的代码如下: import React,View } from 'react-native'; export default class DiscoverPage extends Component { render() { return ( <View style={styles.container}> <Text>DiscoverPage</Text> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1,} }); PersonalPage.js文件完整的代码如下: import React,View } from 'react-native'; export default class PersonalPage extends Component { render() { return ( <View style={styles.container}> <Text>DiscoverPage</Text> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1,} }); App.js文件完整的代码如下: import React,View,Image } from 'react-native'; import Header from './Header'; import HomePage from './home/HomePage'; import CategoryPage from './category/CategoryPage'; import DiscoverPage from './discover/DiscoverPage'; import CartPage from './cart/CartPage'; import PersonalPage from './personal/PersonalPage'; import TabNavigator from 'react-native-tab-navigator'; export default class App extends Component { constructor(props) { super(props); this.state = { selectedTab: 'home',homeBadgeText:'15',categoryBadgeText:'',discoverBadgeText:'',cartBadgeText:'',personalBadgeText:'',} } render() { return ( <View style={styles.container}> <Header/> <TabNavigator hidesTabTouch={true} tabBarStyle={styles.tab}> <TabNavigator.Item selected={this.state.selectedTab === 'home'} selectedTitleStyle={{color: "#3496f0"}} renderIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/home_normal.png')} />} renderSelectedIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/home_focus.png')} />} renderBadge={() => this.state.homeBadgeText === ''? null: <View style={{alignItems:'center',backgroundColor:'red',width:22,borderRadius: 100,borderColor: '#d6d7da'}}> <Text style={{color: '#fff',fontSize:12}}>{this.state.homeBadgeText}</Text> </View> } onPress={() => this.setState({selectedTab: 'home'})}> <HomePage/> </TabNavigator.Item> <TabNavigator.Item selected={this.state.selectedTab === 'category'} selectedTitleStyle={{color: "#3496f0"}} renderIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/category_normal.png')} />} renderSelectedIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/category_focus.png')} />} renderBadge={() => this.state.categoryBadgeText === ''? null: <View style={{alignItems:'center',borderColor: '#d6d7da'}}> <Text style={{color: '#fff',fontSize:12}}>{this.state.categoryBadgeText}</Text> </View> } onPress={() => this.setState({selectedTab: 'category'})}> <CategoryPage/> </TabNavigator.Item> <TabNavigator.Item selected={this.state.selectedTab === 'discover'} selectedTitleStyle={{color: "#3496f0"}} renderIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/discover_normal.png')} />} renderSelectedIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/discover_focus.png')} />} renderBadge={() => this.state.discoverBadgeText === ''? null: <View style={{alignItems:'center',fontSize:12}}>{this.state.discoverBadgeText}</Text> </View> } onPress={() => this.setState({selectedTab: 'discover'})}> <DiscoverPage/> </TabNavigator.Item> <TabNavigator.Item selected={this.state.selectedTab === 'cart'} selectedTitleStyle={{color: "#3496f0"}} renderIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/cart_normal.png')} />} renderSelectedIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/cart_focus.png')} />} renderBadge={() => this.state.cartBadgeText === ''? null: <View style={{alignItems:'center',fontSize:12}}>{this.state.cartBadgeText}</Text> </View> } onPress={() => this.setState({selectedTab: 'cart'})}> <CartPage/> </TabNavigator.Item> <TabNavigator.Item selected={this.state.selectedTab === 'personal'} selectedTitleStyle={{color: "#3496f0"}} renderIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/personal_normal.png')} />} renderSelectedIcon={() => <Image style={styles.tabIcon} source={require('./images/tabs/personal_focus.png')} />} renderBadge={() => this.state.personalBadgeText === ''? null: <View style={{alignItems:'center',fontSize:12}}>{this.state.personalBadgeText}</Text> </View> } onPress={() => this.setState({selectedTab: 'personal'})}> <PersonalPage/> </TabNavigator.Item> </TabNavigator> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1,},tab: { height: 54,backgroundColor: '#303030',flexDirection: 'row',tabIcon: { width: 30,height: 35,resizeMode: 'stretch',} }); App.js文件中新增加的代码下图已用方框标出: 安卓和苹果手机在模拟器中运行的效果截图如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Xcode中的行高
- asp.net2.0学习历程 菜鸟到中级程序员的飞跃 转载
- 将Oracle DMP文件导入到oracle的全新安装中
- ruby – Datamapper:报告为什么我无法销毁记录
- c – 从std :: vector读取二进制数据的最简单方法?
- 从Rails 3.0升级到Rails 3.2(Ruby 1.9.3 Passenger)后出现大
- ruby-on-rails – 将ActionMailer与公司Gmail帐户一起使用
- 最短路 Dijkstra算法
- objective-c – Lion下的NSUserDefaults和沙盒
- Flex与java进行socket通信完成以断点续传方式的文件上传