美文网首页RN
react native 页面跳转传参

react native 页面跳转传参

作者: 走走婷婷1215 | 来源:发表于2017-03-01 11:08 被阅读924次

react native 组件之间传参包括父传子和子传父,但是也有页面跳转时需要传参,比如从A页面跳转到B页面,两者无甚关系,但是B页面需要A页面的关键字来对数据进行筛选,这个时候就需要通过页面跳转来传参。

react native 的页面跳转组件为 Navigator, 关于 Navigator 的相关资料:http://www.jianshu.com/p/91fa0f34895e

Navigator 跳转时就可以进行传参:

A页面跳转时传参:

图片.png

B页面接收参数直接用 props 就可以了:

图片.png

但是到这还没完,我之前看到的教程都只讲到这,简直是坑爹。

我们的页面都是用 Navigator 来控制的,而我把 Navigator 放在了 Routers.android.js 中,当程序进入 index.android.js 中时,让其进入到 Routers.android.js 中。

index.android.js:

图片.png

而我的 Routers.android.js 就相当于 react 中的路由管理部分,所有的页面都需要在这里注册:

'use strict';  // Strict mode 错误处理
import React, { Component } from 'react';
import {
    View,
    Text,
    Navigator,
    BackAndroid,
    Image,
} from 'react-native';
import styles from './styles'
import { TabBar } from './js/components';
import { Login,Mine,PersonalDetails,MapView } from './js/container';

export default class Router extends Component {

    constructor(props) {
        super(props);
        this._renderPage = this._renderPage.bind(this);
    }

    _renderPage(route, nav) {

        switch (route.id){
            case 'home' :
                return (
                    <View style={ styles.container }>
                        <TabBar nav={nav} />
                    </View>
                );
                break;
            case 'login' :
                return (
                    <Login nav={nav} />
                );
                break;
            case 'mine' :
                return (
                    <Mine nav={nav} />
                );
                break;
            case 'personalDetails' :
                return (
                    <PersonalDetails nav={nav} {...route.params} />
                );
                break;
            case 'mapView' :
                return (
                    <MapView nav={nav} />
                );
                break;
        }

    }

    render() {
        return (
            <Navigator
                initialRoute = {{name:'Home', index:0, id:'home'}}
                configureScene={() => Navigator.SceneConfigs.FadeAndroid}
                renderScene={this._renderPage}
            />
        );
    }
}

我们在这里细节的讲一些该部分:

图片.png 图片.png

上面已经提到了,传参重要的一步,就是用 route 将参数展开传递过去,这样在 B 页面才能用 props 拿到。

成功传参截图:

图片.png

相关文章

网友评论

    本文标题:react native 页面跳转传参

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