html京东快速购物导航,基于React Native构建的仿京东客户端(五)如何实现首页 分类 发现 购物车 我的 Tab导航页面...

这篇博客展示了如何在React Native应用中使用`react-native-tab-navigator`库创建底部导航栏,包括Home、Category、Discover、Cart和Personal五个页面,并且实现了页面切换和徽标显示的功能。每个页面的代码结构简洁,都在各自的组件文件中定义。App.js文件中通过state管理和TabNavigator组件实现了底部导航栏的交互效果。
摘要由CSDN通过智能技术生成

新建4个用红色方框标识的文件,如下图所示:

6dfa3915f40dd31fdd667bd9a5e0296c.png

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 (

CartPage

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: '#F5FCFF',

}

});

CategoryPage.js文件完整的代码如下:

import React, { Component } from 'react';

import {

StyleSheet,

Text,

View

} from 'react-native';

export default class CategoryPage extends Component {

render() {

return (

CategoryPage

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: '#F5FCFF',

}

});

DiscoverPage.js文件完整的代码如下:

import React, { Component } from 'react';

import {

StyleSheet,

Text,

View

} from 'react-native';

export default class DiscoverPage extends Component {

render() {

return (

DiscoverPage

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: '#F5FCFF',

}

});

PersonalPage.js文件完整的代码如下:

import React, { Component } from 'react';

import {

StyleSheet,

Text,

View

} from 'react-native';

export default class PersonalPage extends Component {

render() {

return (

DiscoverPage

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: '#F5FCFF',

}

});

App.js文件完整的代码如下:

import React, { Component } from 'react';

import {

StyleSheet,

Text,

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 (

selected={this.state.selectedTab === 'home'}

selectedTitleStyle={{color: "#3496f0"}}

renderIcon={() => }

renderSelectedIcon={() => }

renderBadge={() =>

this.state.homeBadgeText === ''? null:

{this.state.homeBadgeText}

}

onPress={() => this.setState({selectedTab: 'home'})}>

selected={this.state.selectedTab === 'category'}

selectedTitleStyle={{color: "#3496f0"}}

renderIcon={() => }

renderSelectedIcon={() => }

renderBadge={() =>

this.state.categoryBadgeText === ''? null:

{this.state.categoryBadgeText}

}

onPress={() => this.setState({selectedTab: 'category'})}>

selected={this.state.selectedTab === 'discover'}

selectedTitleStyle={{color: "#3496f0"}}

renderIcon={() => }

renderSelectedIcon={() => }

renderBadge={() =>

this.state.discoverBadgeText === ''? null:

{this.state.discoverBadgeText}

}

onPress={() => this.setState({selectedTab: 'discover'})}>

selected={this.state.selectedTab === 'cart'}

selectedTitleStyle={{color: "#3496f0"}}

renderIcon={() => }

renderSelectedIcon={() => }

renderBadge={() =>

this.state.cartBadgeText === ''? null:

{this.state.cartBadgeText}

}

onPress={() => this.setState({selectedTab: 'cart'})}>

selected={this.state.selectedTab === 'personal'}

selectedTitleStyle={{color: "#3496f0"}}

renderIcon={() => }

renderSelectedIcon={() => }

renderBadge={() =>

this.state.personalBadgeText === ''? null:

{this.state.personalBadgeText}

}

onPress={() => this.setState({selectedTab: 'personal'})}>

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

},

tab: {

height: 54,

backgroundColor: '#303030',

flexDirection: 'row',

},

tabIcon: {

width: 30,

height: 35,

resizeMode: 'stretch',

}

});

App.js文件中新增加的代码下图已用方框标出:

583b7c4f329fc39c21f27f67a768e389.png

安卓和苹果手机在模拟器中运行的效果截图如下:

520621b1a7c90f3d1e6b0b8bcbda6bff.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值