React-Native学习十八:Navigator
发布时间:2020-12-15 03:24:03 所属栏目:百科 来源:网络整理
导读:Navigator处理你的app中不同页面的切换。它使用JavaScript实现,在iOS和Android中都可用。如果仅仅用于iOS,你也可以使用NavigatorIOS,因为它使用的是本地的UIKit导航; 一、属性和方法 名称 类型 说明 initialRoute object 导航的初始route(第一个显示的
Navigator处理你的app中不同页面的切换。它使用JavaScript实现,在iOS和Android中都可用。如果仅仅用于iOS,你也可以使用NavigatorIOS,因为它使用的是本地的UIKit导航; 一、属性和方法
二、实例 index.android.js文件: 'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { AppRegistry,StyleSheet,Navigator,Text,Image,TouchableOpacity,} = ReactNative; //引入子页面 var Page1 = require('./Page1'); var Page2 = require('./Page2'); var Page3 = require('./Page3'); //设置导航栏 var NavigationBarRouteMapper = { //设置导航栏左按钮 LeftButton: function(route,navigator,index,navState) { if(index === 0){ return null; }else{ return( <TouchableOpacity style={styles.navBarLeftButton} onPress={()=>{try{navigator.jumpBack();}catch(error){}}}> <Text style={[styles.navBarText,styles.navBarButtonText]}>Back</Text> </TouchableOpacity> ); } },//设置导航栏标题 Title: function(route,navState) { return (<Text style={[styles.navBarText,styles.navBarTitleText]}>{route.title}</Text>); },//设置导航栏右按钮 RightButton: function(route,navState) { if(index === navState.routeStack.length - 1){ return null; }else{ return( <TouchableOpacity style={styles.navBarRightButton} onPress={()=>{navigator.jumpForward();}}> <Text style={[styles.navBarText,styles.navBarButtonText]}>Next</Text> </TouchableOpacity> ); } } }; var MyAwesomeApp = React.createClass ({ //设置导航子页面切换动画 configureScence: function(route) { return Navigator.SceneConfigs.FadeAndroid; },//设置导航子页面导航路由方式 renderScene: function(route,navigator) { this._navigator = navigator; switch(route.name) { case 'Page1': return <Page1 navigator={navigator}/>; case 'Page2' : return <Page2 navigator={navigator} />; case 'Page3' : return <Page3 navigator={navigator} />; } },render: function() { const routes = [ {name: 'Page1',title: 'Title1',index: 0},{name: 'Page2',title: 'Title2',index: 1},{name: 'Page3',title: 'Title3',index: 2},]; return( //返回导航栏视图,并通过initialRoute显示第一次显示的子页面,initialRouteStack导航栏的子页面路由栈,configureScence导航栏子页面切换动画,navigationBar导航栏标题栏实现,renderScene导航栏路由方式 <Navigator style={styles.nav} initialRoute={routes[0]} initialRouteStack={routes} configureScence={this.configureScence} navigationBar={<Navigator.NavigationBar style={styles.navBar} routeMapper={NavigationBarRouteMapper}/>} renderScene={this.renderScene}/> ); } }); var styles = StyleSheet.create({ nav: { flex: 1,},navBar: { backgroundColor: 'white',navBarText: { fontSize: 16,marginVertical: 10,navBarTitleText: { color: '#373E4D',fontWeight: '500',marginVertical: 9,marginLeft: 103,navBarLeftButton: { paddingLeft: 10,navBarRightButton: { paddingRight: 10,navBarButtonText: { color: '#5890FF',}); AppRegistry.registerComponent('MyAwesomeApp',() => MyAwesomeApp);Page1.js文件(其它Page2.j、Page3.js代码类似) 'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { StyleSheet,View,} = ReactNative; var Page1 = React.createClass ({ render: function() { return( <View style={styles.container}> <Text style={styles.pagetext}>page1Content</Text> </View> ); } }); var styles = StyleSheet.create({ container: { flex: 1,alignItems: 'center',justifyContent: 'center',pagetext: { fontSize: 16,} }); module.exports = Page1;三、运行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |