Navigator实现页面跳转

reaact-native version:0.57

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

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

// https://github.com/ptomasroos/react-native-tab-navigator
import TabNavigator from 'react-native-tab-navigator';
// npm install react-native-deprecated-custom-components --save
import {Navigator} from 'react-native-deprecated-custom-components';

import Boy from './Boy';


const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
  android:
    'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

type Props = {};
export default class App extends Component<Props> {

  constructor(props) {
    super(props);
    this.state = {
      selectedTab: 'home'
    }
  }

  render() {
    return (
      <View style={styles.container}>
        <Navigator
          initialRoute={{
            // 跳转到哪个页面
          component: Boy
        }}
          // 固定写法
          renderScene={
          (route, navigator) => {
            let Component = route.component;
            return <Component {...route.params} navigator={navigator} />
          }
        }
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#F5FCFF',
  },
  page1: {
    flex: 1,
    backgroundColor: 'red'
  },
  page2: {
    flex: 1,
    backgroundColor: 'yellow'
  },
  image: {
    height: 22,
    width: 22
  }

});

Boy.js
import React, {Component} from 'react';
import {
  View,
  StyleSheet,
  Text
} from 'react-native'


import Girl from './Girl'

export default class Boy extends Component{
  constructor(props){
    super(props);
    this.state = {
      word:''
    }
  }

  render(){
    return (
      <View style={styles.container}>
        <Text style={styles.text}>I am boy</Text>
        <Text style={styles.text} onPress={() => {
          this.props.navigator.push({
            component: Girl,
            params:{
              word:'一支花',
              onCallBack:(word) => {
                this.setState({
                  word:word
                })
              }
            }
          })
        }}>送给女孩一支花</Text>
        <Text style={styles.text}>{this.state.word}</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container:{
    flex: 1,
    backgroundColor: 'gray',
    justifyContent: 'center'
  },
  text:{
    fontSize:20
  }
});
Girl.js
import React, {Component} from 'react';
import {
  View,
  StyleSheet,
  Text
} from 'react-native'
export default class Girl extends Component{
  constructor(props){
    super(props);
    this.state = {
      word:''
    }
  }

  render(){
    return (
      <View style={styles.container}>
        <Text style={styles.text}>I am Girl</Text>
        <Text style={styles.text}>我收到男孩的{this.props.word}</Text>
        <Text style={styles.text} onPress={() => {
          this.props.onCallBack('巧克力');
          this.props.navigator.pop();
        }}>送给男孩巧克力</Text>

      </View>
    );
  }
}

const styles = StyleSheet.create({
  container:{
    flex: 1,
    backgroundColor: 'gray',
    justifyContent: 'center'
  },
  text:{
    fontSize:20
  }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值