ReactNative-Navigator组件简单使用

来源:互联网 发布:齿轮强度校核软件 编辑:程序博客网 时间:2024/06/05 20:33

这里写图片描述

主要属性

  • configureScene function 方法,该为可选的方法进行配置页面切换动画和手势。该会通过路由和路由栈两个参数调用,进行返回一个页面参数配置对象:(route, routeStack) => Navigator.SceneConfigs.FloatFromRight

  • initialRoute object 参数对象 进行设置导航初始化的路由页面。路由是标识导航器渲染标识每一个页面的对象。initialRoute必须为initialRouteStack中的路 由。同时initialRoute默认为initialRouteStack中路由栈的最后一项

  • initialRouteStack [object] 参数对象数组 该是一个初始化的路由数组进行初始化。如果initalRoute属性没有设置的话,那么就必须设置initialRouteStack属性,使用该最后 一项作为初始路由。 如果initalRouteStack属性没有设置的话,该会生成只包含initalRoute值的数组

  • navigationBar node 该为可选的参数,在页面切换中用来提供一个导航栏

  • navigator object 该为可选参数,可以从父类导航器中获取导航器对象

  • onDidFoucs function 该方法已经废弃,我们可以使用navigationContext.addListener(‘didfocus’,callback)方法进行替代。该 会在每次页面切换完成或者初始化之后进行调用该方法。该参数为新页面的路由

  • onWillFocus function 该方法已经废弃,我们可以使用navigationContext.addListener(‘willfocus’,callback)方法进行替代。该会页面每次进行切换之前调用

  • renderScene function 该为必须调用的方法,该用来渲染每一个路由指定的页面。参数为路由以及导航器对象两个参数,具体是方法如下:(route, navigator) =>

  • sceneStyle 样式风格,该继承了View视图的所有样式风格。可以参照:点击查看View样式。 该设置用于每个页面容器的风格

import React, {Component} from 'react';import {    AppRegistry,    StyleSheet,    View,    Text,    Navigator,    TouchableOpacity} from 'react-native';class NavigatorG extends Component {    render() {        return (            <Navigator                //路由初始化配置信息, name() component(默认组件)                initialRoute={{name: 'page1'}}                //配置动画                configureScene={this.configureScene}                //渲染场景  (重点)                renderScene={(router, navigator)=> this.renderScene(router, navigator)}            />        )    }    /**                 配置动画     *  - Navigator.SceneConfigs.PushFromRight (default)     *  - Navigator.SceneConfigs.FloatFromRight     *  - Navigator.SceneConfigs.FloatFromLeft     *  - Navigator.SceneConfigs.FloatFromBottom     *  - Navigator.SceneConfigs.FloatFromBottomAndroid     *  - Navigator.SceneConfigs.FadeAndroid     *  - Navigator.SceneConfigs.HorizontalSwipeJump     *  - Navigator.SceneConfigs.HorizontalSwipeJumpFromRight     *  - Navigator.SceneConfigs.VerticalUpSwipeJump     *  - Navigator.SceneConfigs.VerticalDownSwipeJump     */    configureScene() {        return Navigator.SceneConfigs.FloatFromRight    }    /**     *  渲染场景, router(路由) navigator(导航)参数很重要     */    renderScene(router, navigator) {        var Component = null;        switch (router.name) {            case 'page1':                Component = Page1;                break;            case 'page2':                Component = Page2;                break;            default:                Component = Page3;        }        //实质将其封装成组件返回        return <Component navigator={navigator}/>    }}class Page1 extends Component {    goPage2() {        this.props.navigator.push(            {name: 'page2'}        );    }    render() {        return (            <View style={[styles.container, {backgroundColor: 'rgba(34, 65, 66, 0.6)'}]}>                <TouchableOpacity onPress={() => this.goPage2()}>                    <Text>I am Page1</Text>                </TouchableOpacity>            </View>        )    }}class Page2 extends Component {    goPage3() {        this.props.navigator.push({name: 'page3'});    }    render() {        return (            <View style={[styles.container, {backgroundColor: 'green'}]}>                <TouchableOpacity onPress={() => this.goPage3()}>                    <Text >I am Page2</Text>                </TouchableOpacity>            </View>        )    }}class Page3 extends Component {    /**     * getCurrentRoutes()    该进行返回存在的路由列表信息     *jumpBack()             该进行回退操作  但是该不会卸载(删除)当前的页面     *jumpForward()          进行跳转到相当于当前页面的下一个页面     *jumpTo(route)          根据传入的一个路由信息,跳转到一个指定的页面(该页面不会卸载删除)     *push(route)            导航切换到一个新的页面中,新的页面进行压入栈。通过jumpForward()方法可以回退过去     *pop()                  当前页面弹出来,跳转到栈中下一个页面,并且卸载删除掉当前的页面     *replace(route)         只用传入的路由的指定页面进行替换掉当前的页面     *replaceAtIndex(route,index)               传入路由以及位置索引,使用该路由指定的页面跳转到指定位置的页面     *replacePrevious(route)                    传入路由,通过指定路由的页面替换掉前一个页面     *resetTo(route)                            进行导航到新的界面,并且重置整个路由栈     *immediatelyResetRouteStack(routeStack)   该通过一个路由页面数组来进行重置路由栈     *popToRoute(route)                        进行弹出相关页面,跳转到指定路由的页面,弹出来的页面会被卸载删除     *popToTop()                                进行弹出页面,导航到栈中的第一个页面,弹出来的所有页面会被卸载删除     */    test() {        this.props.navigator.jumpBack();    }    render() {        return (            <View style={[styles.container, {backgroundColor: 'red'}]}>                <TouchableOpacity onPress={() => this.test()}>                    <Text>I am Page3</Text>                </TouchableOpacity>            </View>        )    }}const styles = StyleSheet.create({    container: {        flex: 1,        justifyContent: 'center',        alignItems: 'center',        backgroundColor: '#F5FCFF',    }})module.exports = NavigatorG;
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗车祸前脚软组织受伤了怎么办 6岁儿童夜里盗汗惊战发抖怎么办 一个月大的小狗尾巴掉毛怎么办 口袋妖怪用修改器被ban了怎么办 联币金融提现不到账怎么办 秘密花园的手抄报怎么办?五年级 雷蛇鼠标不亮了怎么办呢 汽车后备箱的垫子好臭怎么办 摩托尾箱内衬味道太重怎么办 买房子把办贷款的单据丢了怎么办 鞋盒破损卖家拒绝退货怎么办 顺丰快递退回发件人签收失败怎么办 客户收到衣服后说衣服破损怎么办 纱窗被老鼠咬了个洞怎么办 双色印刷机开槽刀调不动怎么办 水管软管两端的螺帽下包生锈怎么办 棉花被子盖时间长了被芯变小怎么办 垫的被子发霉了啊没有地方晒怎么办 小孩拉尿在丝棉被棉怎么办 把兔子养大了竟然会咬人怎么办 小兔子生下来母兔子不喂奶怎么办 11个月的宝宝肚子有小白虫怎么办 电焊把脸烤了痒的不行怎么办? 还没满月的宝宝吐奶怎么办 周岁宝宝发烧腹泻吃药老吐怎么办 生完宝宝后肚皮很黑怎么办 两个月宝宝抵抗力差总生病怎么办 两岁宝宝只会说几个简单的词怎么办 两岁宝宝对绘本不感兴趣怎么办 一岁十个月宝宝不爱吃饭怎么办 孩子上三年级学习太差应该怎么办 mac系统打数字出显符号怎么办 我太粗心了工作中总犯错怎么办 四年级的孩子数学计算总粗心怎么办 小孩做作业拖拉的很厉害怎么办 二年级孩子做作业太粗心怎么办 发现孩子做作业时玩手机怎么办 高三孩子考试时慌乱老粗心怎么办 助班面试你的学生不喜欢你怎么办 上三年级的小孩不愿做作业怎么办 快一年了孩子上幼儿园总哭怎么办