ReactNative之App引導(dǎo)頁實現(xiàn)邏輯

前言

眼看很多公司都開始嘗試使用ReactNative,達到跨平臺開發(fā),最近也寫了很多文章,希望讓更多想了解的同學(xué)快速上手ReactNative.

如果喜歡我的文章,可以關(guān)注我微博:袁崢Seemygo

ReactNative之App引導(dǎo)頁實現(xiàn)邏輯

  • 在RN中實現(xiàn)引導(dǎo)頁,相比原生實現(xiàn)復(fù)雜多了。
  • 原因:
  • 1.RN中不能讀取原生的配置信息info.plist文件,這樣也就沒法判斷當(dāng)前是不是最新版本,是最新版本就展示引導(dǎo)頁
  • 2.RN的本地存儲是異步的,不是同步的,這樣就導(dǎo)致在一開始的時候,想去獲取本地存儲信息,根據(jù)存儲信息判斷顯示引導(dǎo)頁還是主頁,就會報錯
    • 報錯原因很簡單,程序一啟動,就需要立馬顯示界面,但是由于異步,并不能那么快返回.

RN引導(dǎo)頁解決思路:

  • 自己寫一個啟動界面,一開始的時候顯示啟動界面
  • 然后在顯示完啟動界面的方法,去判斷待會顯示引導(dǎo)頁,還是主頁

如何判斷顯示引導(dǎo)頁還是主頁

  • 第一次進入界面,寫個屬性,記錄下第一次加載。
  • 每次啟動,獲取之前是否保存過第一次加載的屬性,如果加載過,就顯示主頁,沒加載過,就顯示引導(dǎo)頁

App引導(dǎo)頁實現(xiàn)代碼

/**
 * Created by ithinkeryz on 2017/5/15.
 */

import React, { Component } from 'react';

import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    AsyncStorage,
    Image
} from 'react-native';

import Main from './Main/Main'

import {Navigator} from 'react-native-deprecated-custom-components'

import Guide from './Guide/Guide'

import Common from './Common/Common'

class LaunchView extends Component {
    render(){
        return (
            <Image source={{uri:'LaunchImage'}} style={{width:Common.screenW,height:Common.screenH}}/>
        )
    }

    componentDidMount() {
        // 延遲點
        setTimeout(this.openApp.bind(this),2000);
        // this.openApp();
    }

    openApp(){
        AsyncStorage.getItem('isFirst',(error,result)=>{

            if (result == 'false') {
                console.log('不是第一次打開');

                this.props.navigator.replace({
                    component:Main
                })

            } else  {

                console.log('第一次打開');

                // 存儲
                AsyncStorage.setItem('isFirst','false',(error)=>{
                    if (error) {
                        alert(error);
                    }
                });

                this.props.navigator.replace({
                    component:Guide
                })
            }
        });
    }
}

export default class App extends Component {

    // 渲染場景
    _renderScene(route, navigator){
        return (
            <route.component navigator={navigator} {...route} />
        )
    }



    render() {
        // 判斷是不是第一次打開


        return (
            <Navigator  initialRoute={{
                component: LaunchView
            }}
                        renderScene={this._renderScene.bind(this)}

                        style={{flex:1}}
            />
        );


    }
    
}

實現(xiàn)效果

  • 第一次進入
啟動頁.png
引導(dǎo)頁.png
  • 以后進入,就直接主頁
主頁.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,657評論 4 61
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 文|零露 一個才情冶艷的女子,出身官宦之家,受到過良好的教育,善讀書寫詞,通音律,書畫造詣也極高。在婚姻上未遇到與...
    零露_清揚婉兮閱讀 1,134評論 11 9
  • 產(chǎn)品類別:自營電商 產(chǎn)品核心價值:高品質(zhì)精選商品和配套服務(wù),低成本價銷售 目標(biāo)用戶:城市白領(lǐng)為主,喜歡質(zhì)感和品質(zhì)的...
    xinxinzhang閱讀 923評論 3 3

友情鏈接更多精彩內(nèi)容