ReactNative實現(xiàn)頁面之間的跳轉(zhuǎn)

通過Navigator實現(xiàn)頁面的跳轉(zhuǎn)

一、在index.android.js中悟耘,添加Navigator(ios中也需要寫,所以最好單獨(dú)抽出來)

首先導(dǎo)入Navigator

import {Navigator} from "react-native-deprecated-custom-components";

具體實現(xiàn):
component:Launch 設(shè)置首先要顯示的歡迎頁頁面

 render() {
        //返回
        return (
            <Navigator
                initialRoute={{name:'啟動頁',component:Launch}}
                configureScene={()=>{
                    return Navigator.SceneConfigs.PushFromRight;
                }}
                renderScene={(route, navigator) => {
                    let Component = route.component;
                    return <Component {...route.props} navigator={navigator} />
                }}
            />
        );
    }

二、歡迎頁面
顯示一張圖片氓扛,三秒后跳轉(zhuǎn)到首頁,主要代碼:

 //復(fù)雜的操作: 定時器  網(wǎng)絡(luò)請求
    componentDidMount(){
        //定時:隔2s切換到main
        setTimeout(()=>{
            //頁面的切換
            this.props.navigator.replace({
                component:Main,//具體路由的板塊
            });
        },3000);
    }

三论笔、在首頁中采郎,實現(xiàn)詳情頁面的跳轉(zhuǎn)

在首頁中,首先實現(xiàn)底部五個按鈕點(diǎn)擊后頁面之間的切換狂魔,在切換是蒜埋,需要將index.android.js中的navigator傳遞過去

 <TabNavigator hidesTabTouch={true} tabBarStyle={styles.tab}>
                    {this._renderTabItem('首頁',HOME_NORMAL, HOME_FOCUS, HOME, <HomeMain navigator={ this.props.navigator}/>)}
                    {this._renderTabItem('分類',CATEGORY_NORMAL, CATEGORY_FOCUS, CATEGORY, <CategoryMain navigator={ this.props.navigator}/>)}
                    {this._renderTabItem('精選',FAXIAN_NORMAL, FAXIAN_FOCUS, FAXIAN, <ChoicenessMine navigator={ this.props.navigator}/>)}
                    {this._renderTabItem('購物車',CART_NORMAL, CART_FOCUS, CART, <CarMain navigator={ this.props.navigator}/>)}
                    {this._renderTabItem('我的',MINE_NORMAL, MINE_FOCUS, MINE, <MineMain navigator={ this.props.navigator}/>)}
                </TabNavigator>

例如,在第一個頁面首頁HomeMain中最楷,實現(xiàn)點(diǎn)擊某一項整份,跳轉(zhuǎn)到詳情頁:

實現(xiàn)跳轉(zhuǎn)功能代碼:

  //跳轉(zhuǎn)到二級界面
    _pushToDetail(view, text) {
        this.props.navigator.push(
            {
                component: view,//要跳轉(zhuǎn)的板塊
                props: {
                    title: text,//要傳遞的參數(shù)
                }
            }
        );
    }

注:在props寫入要傳遞的參數(shù),props必須與index.android.js中的一致

QQ圖片20170808172836.png

四籽孙、實現(xiàn)頁面的返回

   this.props.navigator.pop();

在安卓手機(jī)中烈评,如果用戶通過點(diǎn)擊物理返回鍵返回時,若返回時需要進(jìn)行某些操作犯建,需要時間對按鍵的監(jiān)聽讲冠,具體實現(xiàn):

 componentDidMount() {
        this.setState({title: this.props.title});
        if (Platform.OS === 'android') {
            BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);
        }

    }

    onBackAndroid = () => {
        const nav = this.props.navigator;
        const routers = nav.getCurrentRoutes();
        if (routers.length > 1) {
            nav.pop();
            return true;
        }
        return false;
    };

五、實現(xiàn)有回傳值的返回

在跳轉(zhuǎn)頁面:

   var _this = this;
        this.props.navigator.push(
            {
                component: nextView,//要跳轉(zhuǎn)的板塊
                props: {
                    title:text,//要傳遞的參數(shù)
                    //回調(diào)!獲取回傳的user
                    getUser: function(user) {
                        Toast.info(user,1);//彈出接收到的值
                        _this.setState({name:user})
                    }
                }
            }
        );

在返回頁面:

 if (this.props.getUser) {
            let user = "注冊成功";
            //回調(diào)傳值給上個頁面
            this.props.getUser(user);
        }
        this.props.navigator.pop();

注意:在跳轉(zhuǎn)頁面中适瓦,如果要setState(),必須要重新定義一下this,否則報錯*

六竿开、其他===其他===其他
有些網(wǎng)上在實現(xiàn)頁面跳轉(zhuǎn),例如首頁跳轉(zhuǎn)到詳情頁玻熙,會出現(xiàn)點(diǎn)擊跳轉(zhuǎn)到詳情頁后否彩,底部的導(dǎo)航欄沒有跟著動,上面是詳情頁嗦随,下面是首頁中底下的五個切換按鈕列荔,所以看著很別扭。原因是因為,在實現(xiàn)五個頁面切換時贴浙,在子view中重新聲明Navigator砂吞,導(dǎo)致中間的view進(jìn)行跳轉(zhuǎn)切換,而不是與所在的Main頁面進(jìn)行切換悬而。具體代碼:

QQ圖片20170808180056.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呜舒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子笨奠,更是在濱河造成了極大的恐慌袭蝗,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件般婆,死亡現(xiàn)場離奇詭異到腥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蔚袍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門乡范,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啤咽,你說我怎么就攤上這事晋辆。” “怎么了宇整?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵瓶佳,是天一觀的道長。 經(jīng)常有香客問我鳞青,道長霸饲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任臂拓,我火速辦了婚禮厚脉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胶惰。我一直安慰自己傻工,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布童番。 她就那樣靜靜地躺著精钮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剃斧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天忽你,我揣著相機(jī)與錄音幼东,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛根蟹,可吹牛的內(nèi)容都是我干的脓杉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼简逮,長吁一口氣:“原來是場噩夢啊……” “哼球散!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起散庶,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蕉堰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悲龟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屋讶,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年须教,在試婚紗的時候發(fā)現(xiàn)自己被綠了皿渗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡轻腺,死狀恐怖乐疆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贬养,我是刑警寧澤挤土,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站煤蚌,受9級特大地震影響耕挨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尉桩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一筒占、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜘犁,春花似錦翰苫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至屈扎,卻和暖如春埃唯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹰晨。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工墨叛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留止毕,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓漠趁,卻偏偏與公主長得像扁凛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闯传,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容