react native 頁面跳轉傳參

react native 組件之間傳參包括父傳子和子傳父,但是也有頁面跳轉時需要傳參,比如從A頁面跳轉到B頁面,兩者無甚關系,但是B頁面需要A頁面的關鍵字來對數據進行篩選,這個時候就需要通過頁面跳轉來傳參。

react native 的頁面跳轉組件為 Navigator, 關于 Navigator 的相關資料:http://www.lxweimin.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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容