美文网首页
react native导航navigator

react native导航navigator

作者: 我弟是个程序员 | 来源:发表于2017-07-13 11:19 被阅读0次

看到好多人在做导航的时候,都是一个组件里面放一个navigation,这样感觉好繁琐,于是自己总结了一套,只需要在RN界面入口的地方用一次,然后,里面的子组件,都不需要在用导航组件来实现导航了。

不多BB,直接上代码:


import React, {Component} from "react";
import {Navigator, AsyncStorage} from "react-native";
import Reading from "../tiantian/container/read/reading";

export default class YunTianZhiHui extends Component {
    constructor(props) {
        super(props);
        global.orgGid = this.props.orgGid;//参数做全局保存
        global.passportGid = this.props.passportGid;//
    }
    render() {
        let defaultName = 'Reading';
        let defaultComponent = Reading;
        return (
            <Navigator
                initialRoute={{ name: defaultName, component: defaultComponent,params:{orgGid:this.props.orgGid,passportGid:this.props.passportGid}}}
                configureScene={(route,routeStack) => {               
                        return Navigator.SceneConfigs.FloatFromRight;
              }}
                interactivePopGestureEnabled={false}
                renderScene={(route, navigator) => {
                let Component = route.component;
                return <Component {...route.params} navigator={navigator} />
              }}/>
        );
    }
}

就是这样,Reading为根组件。YunTianZhiHui 为入口文件。在入口给根组件设置一个导航,那么根组件和根组件的子组件,都具有导航navigator了,就可以用它来实现导航了。这里的组件,指的是每一个视图组件。
下面看一看reading中怎么用navigator:

import React, {Component} from 'react';
import {
    ...
    Navigator,
    ...
} from 'react-native';
export default class Reading extends Component {
    
    //跳转到搜索页面
    navigatorToSearch = () => {
        this.props.navigator.push({
            component: Search,//下一个视图组件名称
            params: {//传递相关的参数
                orgGid: this.props.orgGid,
                passportGid: this.props.passportGid,
            }
        })
    }

//返回上一个页面
 navigatorToBack = () => {
        const {navigator} = this.props;
        if (navigator && navigator.getCurrentRoutes().length > 1) {
            navigator.pop();
        }    
    }

} 

没错 this.props.navigator,这直接拿来使用,在下一个Search页面也可以直接拿来使用,因为在入口文件YunTianZhiHui这个类中的
<Component {...route.params} navigator={navigator} />,已经为子类(姑且就叫子类吧,一时不知道叫什么名字)页面的每一个页面指定了属性navigator。

相关文章

网友评论

      本文标题:react native导航navigator

      本文链接:https://www.haomeiwen.com/subject/gulwhxtx.html