自定义导航

封装导航后,通过 Router 管理所有页面。

格式:router.toXXX(params);

import React , {Component} from 'react';
import {
    StyleSheet,
    PropTypes,
    View,
    Navigator
} from 'react-native';

import BackPress from './BackPress';
import Router from './Router';

export default class Navigation extends Component {
    componentDidMount() {
        //安卓返回键事件监听
        this.backPress = new BackPress(this.navigation);
    }

    componentWillUnmount() {
        //解除安卓返回键监听事件
        this.backPress.removeListener();
    }

    /**
     * 路由转跳的效果,默认是FadeAndroid
     */
    configureScene(route, routeStact) {
        //如果路由有传 切换方式,则使用
        if (route.configureScene) {
            return route.configureScene;
        } else {
            return Navigator.SceneConfigs.FadeAndroid;
        }
    }

    /**
     * 渲染视图,传递props
     */
    renderScene(route, navigator) {
        //router是传递给其他组件,用于路由跳转的类
        this.router = this.router || new Router(navigator);
        //把actions直接传递给每个通过路由转跳的页面,其他参数则通过  route.params传递,它可覆盖actions
        this.actions = this.actions || route.params.actions;
        if (route.component) {
            const MyComponent = route.component;
            return (
                <MyComponent
                    router={this.router}
                    actions={this.actions}
                    {...route.params}
                    />
            )
        }
    }

    render() {
        const {initialRoute} = this.props;
        return (
            <Navigator
                ref={view => this.navigation = view}
                initialRoute={initialRoute}
                navigationBar={<View></View>}
                configureScene={this.configureScene.bind(this)}
                renderScene={this.renderScene.bind(this)}
                />
        )
    }
}

Navigator.propTypes = {
    initialRoute: PropTypes.object.isRequired
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值