美文网首页代码RN-组件的简单使用
React-Native-TabNavigator切换页面(一)

React-Native-TabNavigator切换页面(一)

作者: 精神病患者link常 | 来源:发表于2017-03-31 11:47 被阅读314次

RN要想实现iOS中tabbar的效果,通用的就是用第三方的react-native-tab-navigator了,很好很强大,在此记录使用这个进行页面切换的效果

首先先下载 React-native-tab-navigator

npm install react-native-tab-navigator --save//我在save前面使用一个-竟然不行,也是666

然后在项目中导入

import TabNavigator from 'react-native-tab-navigator'

再然后就可以愉快的使用了
所属关系:TabNavigator-> TabNavigator.Item-> component(页面)

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View
} from 'react-native';

//导入react-native-tab-navigator
import TabNavigator from 'react-native-tab-navigator'

//导入对应的四个页面
import FirstPage from './FirstPage'
import SecondPage from './SecondPage'
import ThirdPage from './ThirdPage'
import FourPage from './FourPage'

export default class HomePage extends Component {
    constructor(props) {
        super(props);

//先声明一个状态,这个状态为了改变tabbar的
//点击tabbar,触发onPress方法,在里面改变状态,从而达到切换页面的效果

        this.state = {
            selectedTab:'首页'
            //默认选择第一个页面('消息'默认选择第二个页面)
            //this.setState({selectedTab:'首页'}) 这个用于切换页面
            //selectedTab:'' ->为不同的值,就切换对应的页面
        };
    }

    render() {
        return (

          <View style={HomePageStyle.viewStyle}>

//初始化tabbar
              <TabNavigator>
//初始化tabbarItem

                  <TabNavigator.Item
                      title='首页'
                      onPress={()=>{this.setState({selectedTab:'首页'})}}
                      selected={this.state.selectedTab === '首页'}
                      titleStyle={HomePageStyle.TBarTitleStyle}
                      selectedTitleStyle={HomePageStyle.TBarTitleSelectStyle}
                  >
//加载页面
                      <FirstPage/>
                  </TabNavigator.Item>

                  <TabNavigator.Item
                      title='消息'
                      onPress={()=>{this.setState({selectedTab:'消息'})}}
                      selected={this.state.selectedTab === '消息'}
                      titleStyle={HomePageStyle.TBarTitleStyle}
                      selectedTitleStyle={HomePageStyle.TBarTitleSelectStyle}
                  >
                      <SecondPage/>
                  </TabNavigator.Item>

                  <TabNavigator.Item
                      title='联系人'
                      onPress={()=>{this.setState({selectedTab:'联系人'})}}
                      selected={this.state.selectedTab === '联系人'}
                      titleStyle={HomePageStyle.TBarTitleStyle}
                      selectedTitleStyle={HomePageStyle.TBarTitleSelectStyle}
                  >
                      <ThirdPage/>
                  </TabNavigator.Item>

                  <TabNavigator.Item
                      title='我的'
                      onPress={()=>{this.setState({selectedTab:'我的'})}}
                      selected={this.state.selectedTab === '我的'}
                      titleStyle={HomePageStyle.TBarTitleStyle}
                      selectedTitleStyle={HomePageStyle.TBarTitleSelectStyle}
                  >
                      <FourPage/>
                  </TabNavigator.Item>


              </TabNavigator>


          </View>

        );
    }
}
var HomePageStyle = StyleSheet.create({

    viewStyle:{
      flex:1,
    },
    TBarTitleStyle:{
        color:'black',
    },
    TBarTitleSelectStyle:{
        color:'red',
    },

});


AppRegistry.registerComponent('myTabBarAndNavigationTest', () => HomePage);

其他页面简单了写个view,这里贴出第一个页面的代码,其他雷同

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View
} from 'react-native';

import TabNavigator from 'react-native-tab-navigator'

export default class FirstPage extends Component {
    constructor(props){
        super(props);
        this.state ={
          selectedTab:'home'
        };
    }
    render() {
        return (
            <View style={FirstStyle.ViewStyle}>

                <Text style={FirstStyle.textStyle}>
                    第一个页面
                </Text>
            </View>
        );
    }
}
const FirstStyle = StyleSheet.create({
    ViewStyle: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: 'red',
    },
    textStyle: {
        textAlign: 'center',
        color: '#333333',
        marginBottom: 5,
    },
});
AppRegistry.registerComponent('myTabBarAndNavigationTest', () => FirstPage);

tabbargif.gif

项目地址:https://github.com/chjwrr/RN-tabbar-navigation

相关文章

  • React-Native-TabNavigator切换页面(一)

    RN要想实现iOS中tabbar的效果,通用的就是用第三方的react-native-tab-navigator了...

  • React-Native-TabNavigator切换页面

    RN实现页面切换效果首先先下载 React-native-tab-navigator 然后在项目中导入 再然后就可...

  • vue 路由切换,页面或组件定位到顶部

    在做vue路由切换的时候,发现一个页面切换到另一个页面,切换组件的时候, 路由可以切换,但是页面和之前页面或组件位...

  • 页面切换

    (一)纯代码多页面切换 (二)多个storyboard彼此之间切换 (三)storyboard内部页面的切换 (四...

  • 路由

    路由帮我们切换组件,帮我们跳转页面(整个项目就一个页面是通过切换组件是想的页面切换效果)

  • Fragment懒加载,简单解决页面切换数据重新加载问题

    前言 用过viewPage+Fragment的都知道当切换页面时,当页面切换超过2页,上上个页面会被销毁,重新切换...

  • 页面切换

    让人无限纠结的一个问题在循环这里,for循环和foreach循环的差别! variable 是声明一个变量的var...

  • vue路由跳转页面不刷新数据

    前言:vue-router的切换不同于传统的页面的切换。路由之间的切换,其实就是组件之间的切换,不是真正的页面切换...

  • vue-router页面切换不刷新的解决办法

    vue-router的切换不同于传统的页面的切换。路由之间的切换,其实就是组件之间的切换,不是真正的页面切换。引用...

  • 页面切换及参数传递

    页面切换及参数传递 在课程的大纲 通过组件a切换页面和传递参数 通过接口router切换页面和传递参数 接收参数 ...

网友评论

    本文标题:React-Native-TabNavigator切换页面(一)

    本文链接:https://www.haomeiwen.com/subject/lcamottx.html