rn 整体的启动流程

react -native 的启动 流程

App启动 -> index.js  -> setup.js  -> WelcomePage.js. -> HomePage.js 

1,index.js.  js入口部分

/** @format */

import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
import Setup from './js/pages/setup'
AppRegistry.registerComponent(appName, () => Setup);

2,setup.js   相关组件以及服务的的初始化

import React, {Component} from 'react';
import {Platform, StyleSheet, View, Image,ListView,Text} from 'react-native';
import {Navigator} from 'react-native-deprecated-custom-components'
import Welcome from './WelcomePage'
// function setup () {
//   // 进行一些初始配置
//   class Root extends Component{
//     renderScene(route,navigator){
//        let Component =  route.component;
//        return <Component  {...route.params }  navigator={navigator}/>
//     }
//     render(){
//       return(<Navigator
//           initialRoute={{component:Welcome}}
//           renderScene={(route,navigator)=>this.renderScene(route,navigator)}
//       />)
//     }
//   }
//    return <Root/>  //返回根组件
// }
//
// module.exports=setup;

// 进行一些初始配置
export default class Root extends Component{
  renderScene(route,navigator){
    let Component =  route.component;
    return <Component  {...route.params }  navigator={navigator}/>
  }
  render(){
    return(<Navigator
        initialRoute={{component:Welcome}}
        renderScene={(route,navigator)=>this.renderScene(route,navigator)}
    />)
  }
}

3,WelcomePage.js 轮播图

import React, {Component} from 'react';
import {Platform, StyleSheet, View, Image,ListView,Text} from 'react-native';
import NavigationBar from "../common/NavigationBar"
import Homepage from "./HomePage"
export default class WelcomePage extends Component{

  componentDidMount(){
    this.timer=setTimeout(()=>{
      this.props.navigator.resetTo({
        component:Homepage
      })
    },2000)
  }
  componentWillUnmount(){
    this.timer&&clearTimeout(this.timer)
  }

   render(){
     return(<View style={styles.container}>
       <NavigationBar
           title='welcome'
           style={{backgroundColor:'blue'}}
       />
       <Text style={styles.text}>wlecome</Text>
     </View>)
   }
}
const styles =  StyleSheet.create({
  container:{

    backgroundColor:'gray',
    justifyContent:'center',
  },
  text:{
    fontSize:20,

  }
})

 4,HomePage.js 

import React, {Component} from 'react';
import {Platform, StyleSheet, View, Image,ListView,Text} from 'react-native';
import NavigationBar from "../common/NavigationBar"
import TabNavigator from "react-native-tab-navigator";

export default class HomePage extends Component{
  constructor(props){
    super(props);
    this.state={
      selectedTab:'tb_popular',
    }
  }
  render(){
    return(
        <View style={styles.container}>
          <NavigationBar
              title='welcome'
              style={{backgroundColor:'blue'}}
          />
         <TabNavigator>
          <TabNavigator.Item
              selected={this.state.selectedTab === 'tb_popular'}
              selectedTitleStyle={{color:'red'}}
              title="最热"
              renderIcon={() => <Image style={styles.image} source={require('../../res/images/ic_polular.png')} />}
              renderSelectedIcon={() => <Image style={[styles.image,{tintColor:'red'}]} source={require('../../res/images/ic_polular.png')} />}
              badgeText="1"
              onPress={() => this.setState({ selectedTab: 'tb_popular' })}>
            <View style={styles.page1}></View>
          </TabNavigator.Item>
          <TabNavigator.Item
              selected={this.state.selectedTab === 'tb_trending'}
              selectedTitleStyle={{color:'yellow'}}
              title="趋势"
              renderIcon={() => <Image style={styles.image} source={require('../../res/images/ic_trending.png')} />}
              renderSelectedIcon={() => <Image style={[styles.image,{tintColor:'yellow'}]} source={require('../../res/images/ic_trending.png')} />}
              onPress={() => this.setState({ selectedTab: 'tb_trending' })}>
            <View style={styles.page2}></View>
          </TabNavigator.Item>
          <TabNavigator.Item
              selected={this.state.selectedTab === 'tb_favorite'}
              selectedTitleStyle={{color:'blue'}}
              title="收藏"
              renderIcon={() => <Image style={styles.image} source={require('../../res/images/ic_unstar_navbar.png')} />}
              renderSelectedIcon={() => <Image style={[styles.image,{tintColor:'blue'}]} source={require('../../res/images/ic_unstar_navbar.png')} />}
              onPress={() => this.setState({ selectedTab: 'tb_favorite' })}>
            <View style={styles.page3}></View>
          </TabNavigator.Item>
          <TabNavigator.Item
              selected={this.state.selectedTab === 'tb_my'}
              selectedTitleStyle={{color:'pink'}}
              title="我的"
              renderIcon={() => <Image style={styles.image} source={require('../../res/images/ic_my.png')} />}
              renderSelectedIcon={() => <Image style={[styles.image,{tintColor:'pink'}]} source={require('../../res/images/ic_my.png')} />}
              onPress={() => this.setState({ selectedTab: 'tb_my' })}>
            <View style={styles.page4}></View>
          </TabNavigator.Item>
        </TabNavigator>
        </View>
    )
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#F5FCFF',
  },
  page1:{
    flex:1,
    backgroundColor:'red',
  },
  page2:{
    flex:1,
    backgroundColor:'yellow',
  },
  page3:{
    flex:1,
    backgroundColor:'blue',
  },
  page4:{
    flex:1,
    backgroundColor:'pink',
  },
  image:{
    width:22,
    height:22
  }
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值