React Native 實(shí)現(xiàn)界面跳轉(zhuǎn) 0.42版本

一個(gè)react-native項(xiàng)目,創(chuàng)建之后會(huì)index.ios和index.android兩個(gè)入口。我們通過(guò)

require('./src/app');

在src/app對(duì)界面進(jìn)行渲染,在在安卓或者ios平臺(tái),都會(huì)統(tǒng)一跳轉(zhuǎn)到app.js文件

以前是在做android開(kāi)發(fā),界面的跳轉(zhuǎn)在本頁(yè)面,通過(guò)點(diǎn)擊事件嗯監(jiān)聽(tīng),通過(guò)Intent皆可以直接跳轉(zhuǎn)界面。但是在RN中,界面的跳轉(zhuǎn)需要我們通過(guò)Navigator進(jìn)行跳轉(zhuǎn)。如果你們運(yùn)行我下面的代碼,你可能會(huì)有疑問(wèn),為什么兩個(gè)文件只有一個(gè)界面。
因?yàn)槲覀僡pp.js這個(gè)文件是應(yīng)用的入口,在這個(gè)入口里,我們做了一件事,Navigator這個(gè)界面跳轉(zhuǎn)的工具注入到項(xiàng)目中,更改下面的代碼,可以跳轉(zhuǎn)到main.js。也就是你整個(gè)app要進(jìn)入的主界面。

import main from './View/main'

initialRoute={{id: 'main', component: main}}

這樣我們?cè)谝院蟮慕缑嬷校涂梢酝ㄟ^(guò)this.props.navigator進(jìn)行界面的跳轉(zhuǎn)回退等一系列界面跳轉(zhuǎn)了。

src/app.js 文件

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Button,
    Navigator
} from 'react-native';

import main from './View/main'



export default class tipsi extends Component {


    render() {
        return (

            <Navigator
                initialRoute={{id: 'main', component: main}}
                configureScene={this.configureScene}
                renderScene={this.renderScene}
            />


        );
    }

    configureScene(route, routeStack) {
        if (route.sceneConfig) { // 有設(shè)置場(chǎng)景
            return route.sceneConfig;
        }
        return Navigator.SceneConfigs.PushFromRight; // 默認(rèn),右側(cè)彈出
    }

    renderScene(route, navigator) {
        return <route.component {...route.passProps} navigator= {navigator}/>;
    }
}

AppRegistry.registerComponent('tipsi', () => tipsi);

src/view/main.js

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Button,
    Navigator
} from 'react-native';


import Counter from './Counter'


export default class tipsi extends Component {


    plus() {
        this.props.navigator.push({
            component: Counter
        })
    }


    render() {
        return (


            <View style={styles.container}>
                <Button title="加減數(shù)量控件" onPress={() => {
                    this.plus()
                }}/>
            </View>
        );
    }


}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    }
});

AppRegistry.registerComponent('tipsi', () => tipsi);

基礎(chǔ)中的基礎(chǔ),剛學(xué)習(xí)的時(shí)候比較懵,希望能幫助更多小白少走彎路。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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