Android中通过React Native的Navigator实现场景跳转及数据传递
来源:互联网 发布:数控车床车盲孔编程 编辑:程序博客网 时间:2024/06/05 16:26
在React Native中要想实现Navigator导航器切换不同的界面就要先了解一个知识:其实了解过React Native的都应该知道,其实我们通过React Native写的这些“界面”,都是依附在一个Android应用中的Activity上的,所以这些“界面”其实被称为场景(Scene),摆放在一个屏幕中的组件,就共同构成了一个“场景(Scene)”场景简单来说其实就是一个占据全屏页面的React组件。
因为index.android.js这个文件相当于我们程序的入口,我们要在这个文件中创建我们的导航器对象,所以先看index.android.js这个文件中的内容:
import React, { Component } from 'react';import { AppRegistry, StyleSheet, Text, View, Navigator} from 'react-native';//一定要注意导包(这里导入的是你要显示的场景的包),不然跳转会报错import MyScene from './MyScene';export default class Skip extends Component { render() { let defaultName = 'MyScene'; let defaultComponent = MyScene; return ( <Navigator //指定了默认的页面,也就是启动app之后会看到的第一屏,需要两个参数,name跟component //通过给initialRoute对象设置名称和对应的组件完成route的初始化,即只要传入需要跳转的组件的名称和组建对象,即可在renderScene中完成页面的跳转。 initialRoute={{ name: defaultName, component: defaultComponent }} configureScene={(route) => { return Navigator.SceneConfigs.VerticalDownSwipeJump;//下滑移出界面 FadeAndroid:表示的是淡入淡出的动画效果 }} //导航器的加载方法 renderScene={(route, navigator) => { let Component = route.component; if(route.component){ //可以通过route里面的数据来渲染指定的内容,并且传递导航器对象到目标页面 route.params是为了方便场景之间传递数据 return <Component {...route.<span style="background-color: rgb(255, 0, 0);">params</span>} navigator={navigator} /> } }} /> ); }}//设置的一些样式const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, },});AppRegistry.registerComponent('Skip', () => Skip);然后看我一进入应用后要显示的场景MyScene.js文件(在该文件中,我没把导包内容粘上):
import MyTo from './MyTo';export default class MyScene extends Component { constructor(props){ super(props); this.state = { resultMessage:"返回来的数据的默认占位内容", }; } //在响应方法中,调用navitager的push方法,进入到下一个场景页面当中 _pressButton(){ const {navigator} = this.props; //创建对象,作用就是能够拿到当前这个方法的对象,不然在使用this时,可能拿到其他方法的对象 var _this = this; if (navigator) { //打印日志,可以查看调试信息 console.log("----------------"); //就是将信息传递给导航器,我们就可以在这个时候将参数传递给Navigator navigator.push({ name:'Second', component:Second, <span style="background-color: rgb(255, 0, 0);">params</span>:{ message:"这是从第一个界面中传递的数据", //通过这种回调,获取到上一个页面中传递回来的数据 getResult:function(myMessage){ _this.setState({ resultMessage:myMessage, }) } } }) } } render() { return ( //这个组件用于封装视图,使其能够正确的响应触摸操作 //此组件与TouchableHighlight的区别在于并没有额外的颜色变化,更适于一般场景 <View > <TouchableOpacity onPress={this._pressButton.bind(this)}> <Text style={{fontSize:30}}>{this.state.resultMessage}</Text> </TouchableOpacity> </View> ) } }最后看我要跳转到的那个场景MyTo.js文件:
import React, { Component } from 'react';import { View, Text,StyleSheet,TouchableOpacity } from 'react-native';export default class MyTo extends Component { constructor(props){ super(props); this.state = { //显示传递过来的数据的默认占位数据 message:"aaa", }; } //生命周期函数 在渲染之后调用 componentWillMount 在渲染之前调用 componentDidMount(){ this.setState({ message:this.props.message, }); } //点击调用的事件,在这个事件中实现返回上一个场景,并通过回调传递数据给上一个场景 _pressButton(){ const { navigator } = this.props; //给navigator设置一个回调方法,用于给第一个页面设置信息,这样就可以完成返回时数据的传递 if(this.props.getResult){ this.props.getResult("这是从第二个界面中传递过来的数据"); } if(navigator){ //类似于直接退出堆栈,返回上一个场景页面 navigator.pop(); } } //我们通过控制路由栈将页面出栈的方式pop()完成跳转回到第一个页面的功能 render(){ return ( <View> <TouchableOpacity onPress={this._pressButton.bind(this)}> <Text style={{fontSize:30}}>点击返回前一个界面</Text> </TouchableOpacity> <Text>第一个界面传入:{this.state.message}</Text> </View> ); }}
1 0
- Android中通过React Native的Navigator实现场景跳转及数据传递
- react-native ListView 通过Navigator传递数据
- React Native 基础篇之Navigator页面的跳转与数据的传递
- react-native的跳转功能Navigator
- React-native Navigator导航跳转
- react-native Navigator 页面跳转
- React Native Android Navigator的使用
- React Native Navigator 的路由以及页面跳转
- React Native的Navigator详解
- React-Native -- 可继承的Navigator
- React Native的Navigator详解
- React Native的Navigator详解
- React Native的Navigator详解
- react native navigator 的使用
- React Native中ScrollableTabView与Navigator的结合使用
- RN(react native)入坑指南-07,使用navigator实现页面跳转
- 【稀饭】react native 实战系列教程之Navigator实现页面跳转
- React-Native学习笔记之:导航器Navigator实现页面间跳转
- 工厂模式
- 设计模式之代理模式
- roscore and rosmaster幕后的功臣
- 在requirejs框架中加载js文件
- Android 从零开始实现微信支付
- Android中通过React Native的Navigator实现场景跳转及数据传递
- NodeJS入门(3)-文件操作
- 《大话数据结构》
- 响铃:乐视称要减少对阿里京东依赖,这个双11怎么玩儿?
- 杭电OJ 2009
- Telnet模拟HTTP请求
- 有序树转二叉树求深度
- Elasticsearch简介
- 抽象工厂模式