1. 程式人生 > >混合開發的大趨勢之一React Native之頁面跳轉

混合開發的大趨勢之一React Native之頁面跳轉

最近事情有點多,沒有長時間地連貫學習,文章也停了一個多禮拜,愧疚,有時間還是繼續學習,繼續寫!

這裡寫圖片描述

廢話不多,貼下執行效果

這裡寫圖片描述

登陸前

這裡寫圖片描述

登入成功後

這裡寫圖片描述

rn的頁面跳轉都是交由Navigator來處理,我們看下文件瞭解這個常用的元件Navigator

Navigator 實質上是呼叫的Native的任務棧通過一系列路由做推送跳轉等邏輯的,所以調的還是源生內容。

他有非常多實用的回撥函式,注入renderScene configureScene 等等等

Navigator正常執行需要以下幾個步驟

1.初始化路由 —>initialRoute
2.配置跳轉動畫 —>configureScene
3.渲染場景 —>renderScene

程式碼是最好的註解,我們直接邊看程式碼邊解釋,先是index.android.js

為了讓邏輯更清晰我們把之前登入的程式碼 放到了login.android.js
index頁面專心做”配置”

import React,{Component} from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Navigator,
  TouchableOpacity
} from 'react-native';
import Button from 'react-native-button'
import
Login from './pages/login.android'; export default class WjjPro extends Component { /** * 使用動態頁面載入 * @param route 路由 * @param navigator 導航器 * @returns {XML} 頁面 */ renderScene(route, navigator) { return <route.component navigator={navigator} {...route.passProps} />; } /** * 配置場景動畫 * @param
route 路由 * @param routeStack 路由棧 * @returns {*} 動畫 */
configureScene(route, routeStack) { if (route.type == 'Bottom') { return Navigator.SceneConfigs.FloatFromBottom; // 底部彈出 } return Navigator.SceneConfigs.PushFromRight; // 右側彈出 } render() { return ( <Navigator style={{flex:1}} initialRoute={{component: Login}} configureScene={this.configureScene} renderScene={this.renderScene}/> ); } } const styles = StyleSheet.create({ }); AppRegistry.registerComponent('WjjPro', () => WjjPro);

因為我們首頁實質上不做展示而是直接跳轉到login頁面,所以我們先配置Navigator,初始化各個函式,然後推給Login這個我們在開始就定義的”元件”,這部分如何實現跳轉的可以看知識傳送門,寫得很詳細,我沒必要再畫蛇添足了

ndex其實就是做了一堆配置然後就傳遞給login了,但是他做了一個很重要的行為,構造了Navigator屬性,然後後續的頁面進行傳遞

登入頁面

登入頁面和上一個例子裡的程式碼沒什麼區別,主要差異就是再判斷表單之後進行跳轉頁面,程式碼如下

name是我們我們要跳轉頁面傳給下一個頁面的引數

它可以在 this.props.name得到我們login頁面傳遞過去的值

type是我們跳轉的動畫效果,對應的找Navigator的configureScene方法

檔案頭也要申明我們下一個被跳轉的元件

import Main from './main.android';
    _jump(name, type = 'Normal') {
        this.props.navigator.push({
          component: Main,
          passProps: {
            name: name
          },
          type: type
        })
      }

登陸成功了那就跳到了我們的首頁

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

export default class Main extends Component {
    constructor(props) {
        super(props);
        this.state = {
            name: '',
        }
    }

    componentDidMount() {
        this.setState({name: this.props.name});
    }
    render() {
        return (
            <View>
                <Text>獲得的引數: value = {this.state.name}</Text>
            </View>
        );
    }
}

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

我們在首頁的componentDidMount方法裡把傳來的引數給Main頁面的name欄位賦值,然後呈現在Text上就行了

總結:

這是個很強大的控制元件,可用於頁面跳轉。

要是用只需要
1.構造Navigator
2.配置Navigator結合業務邏輯
3.呼叫push,jump等方法進行跳轉