1. 程式人生 > >React-native頁面跳轉傳值實現

React-native頁面跳轉傳值實現

首先是index.android.js

我們需要用到Navigator來進行頁面的跳轉,所有的js檔案處於同一目錄下面,

在FirstPageComponent頁面中我們需要定義好引數:
constructor(props) {
        super(props);
        this.state = {};
    }

將引數傳值給需要傳值的頁面:
if(navigator) {
            navigator.push({
                name: 'SecondPageComponent',
                component: SecondPageComponent,
                params:{
                    user:this.state.user,
                    pwd:this.state.pwd
                }
            })
        }

在TextInput控制元件中對引數進行賦值:
onChangeText={(text) => this.setState({user: text})}

第二個頁面接收的引數就很簡單了:
componentDidMount() {
            //這裡獲取從FirstPageComponent傳遞過來的引數: id
            this.setState({
                user:this.props.user,
                pwd:this.props.pwd
            });
    }

第二個頁面TextInput控制元件接收值就這樣寫:
value={this.state.user }

具體實現請看如下原始碼:
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';
import React, {
  AppRegistry,
  Component,
  View,
  Navigator
} from 'react-native';

import FirstPageComponent from './FirstPageComponent';

class ReactNativeDemo extends Component {
  render() {
    var defaultName = 'FirstPageComponent';
    var defaultComponent = FirstPageComponent;
    return (
        <Navigator
            initialRoute={{ name: defaultName, component: defaultComponent }}
            configureScene={(route) => {
            return Navigator.SceneConfigs.HorizontalSwipeJump;
        }}
        renderScene={(route, navigator) => {
            let Component = route.component;
            return <Component {...route.params} navigator={navigator} />
        }}/>
    );
  }
}
AppRegistry.registerComponent('ReactNativeDemo', () => ReactNativeDemo);
接下來就是應用啟動後的首屏頁面
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';
import React,{
    AppRegistry,
    Component,
    StyleSheet,
    Text,
    Image,
    View,
    TextInput
} from 'react-native';

import SecondPageComponent from './SecondPageComponent';

var TouchableButton = require('./module/TouchableButton');

class FirstPageComponent extends React.Component {

    constructor(props) {
        super(props);
        this.state = {};
    }

    _pressButton() {
        const { navigator } = this.props;
        //或者寫成 const navigator = this.props.navigator;
        //為什麼這裡可以取得 props.navigator?請看上文:
        //<Component {...route.params} navigator={navigator} />
        //這裡傳遞了navigator作為props
        if(navigator) {
            navigator.push({
                name: 'SecondPageComponent',
                component: SecondPageComponent,
                params:{
                    user:this.state.user,
                    pwd:this.state.pwd
                }
            })
        }
    }

    render() {
        return (
            <View style={{backgroundColor:'#f4f4f4',flex:1}}>
                <Image
                    style={styles.style_image}
                    source={require('./app_icon.jpg')}/>
                <TextInput
                    style={styles.style_user_input}
                    placeholder='QQ號/手機號/郵箱'
                    numberOfLines={1}
                    autoFocus={true}
                    underlineColorAndroid={'transparent'}
                    onChangeText={(text) => this.setState({user: text})}
                    textAlignVertical='center'
                    textAlign='center'/>
                <View style={{height:1,backgroundColor:'#f4f4f4'}}/>
                <TextInput
                    style={styles.style_pwd_input}
                    placeholder='密碼'
                    numberOfLines={1}
                    underlineColorAndroid={'transparent'}
                    onChangeText={(text) => this.setState({pwd: text})}
                    secureTextEntry={true}
                    textAlignVertical='center'
                    textAlign='center'
                />

                <View  style={styles.style_view_commit}>
                    <Text style={{color:'#fff'}}>
                       登入
                    </Text>
                </View>

                <View>
                    <TouchableButton
                        underlayColor='#4169e1'
                        style={styles.style_view_button}
                        onPress={this._pressButton.bind(this)}
                        text='登入有點選效果-跳轉頁面'>
                    </TouchableButton>
                </View>

                <View style={{flex:1,flexDirection:'row',alignItems: 'flex-end',bottom:10}}>
                     <Text style={styles.style_view_unlogin}>
                         無法登入?
                    </Text>
                    <Text style={styles.style_view_register}>
                         新使用者
                    </Text>
                </View>
          </View>
        );
    }
}

const styles = StyleSheet.create({
  style_image:{
    borderRadius:45,
    height:70,
    width:70,
    marginTop:40,
    alignSelf:'center',
  },
  style_user_input:{
      backgroundColor:'#fff',
      marginTop:10,
      height:45,
  },
  style_pwd_input:{
      backgroundColor:'#fff',
      height:45,
  },
  style_view_commit:{
      marginTop:15,
      marginLeft:10,
      marginRight:10,
      backgroundColor:'#63B8FF',
      borderColor:'#5bc0de',
      height:45,
      borderRadius:5,
      justifyContent: 'center',
      alignItems: 'center',
  },
  style_view_button:{
      marginTop:15,
      marginLeft:10,
      marginRight:10,
      backgroundColor:'#63B8FF',
      borderColor:'#5bc0de',
      height:45,
      borderRadius:5,
      justifyContent: 'center',
      alignItems: 'center',
  },
  style_view_unlogin:{
    fontSize:15,
    color:'#63B8FF',
    marginLeft:10,
  },
  style_view_register:{
    fontSize:15,
    color:'#63B8FF',
    marginRight:10,
    alignItems:'flex-end',
    flex:1,
    flexDirection:'row',
    textAlign:'right',
  }
});

export default FirstPageComponent

接下來是我們跳轉的第二個頁面
import React, {
    AppRegistry,
    Component,
    StyleSheet,
    Text,
    Image,
    View,
    TextInput
} from 'react-native';

import FirstPageComponent from './FirstPageComponent';

var TouchableButton = require('./module/TouchableButton');

class SecondPageComponent extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            user:null,
            pwd:null
        };
    }

    componentDidMount() {
            //這裡獲取從FirstPageComponent傳遞過來的引數: id
            this.setState({
                user:this.props.user,
                pwd:this.props.pwd
            });
    }

    _pressButton() {
        const { navigator } = this.props;
        if(navigator) {
            //很熟悉吧,入棧出棧~ 把當前的頁面pop掉,這裡就返回到了上一個頁面:FirstPageComponent了
            navigator.pop();
        }
    }

    render() {
        return (
            <View style={{backgroundColor:'#f4f4f4',flex:1}}>
                <Image
                    style={styles.style_image}
                    source={require('./app_icon.jpg')}/>
                <TextInput
                    style={styles.style_user_input}
                    placeholder='QQ號/手機號/郵箱'
                    numberOfLines={1}
                    autoFocus={true}
                    underlineColorAndroid={'transparent'}
                    value={this.state.user }
                    textAlignVertical='center'
                    textAlign='center'/>
                <View style={{height:1,backgroundColor:'#f4f4f4'}}/>
                <TextInput
                    style={styles.style_pwd_input}
                    placeholder='密碼'
                    numberOfLines={1}
                    underlineColorAndroid={'transparent'}
                    value={this.state.pwd }
                    secureTextEntry={true}
                    textAlignVertical='center'
                    textAlign='center'
                />

                <View  style={styles.style_view_commit}>
                    <Text style={{color:'#fff'}}>
                       登入
                    </Text>
                </View>

                <View>
                    <TouchableButton
                        underlayColor='#4169e1'
                        style={styles.style_view_button}
                        onPress={this._pressButton.bind(this)}
                        text='登入有點選效果-跳轉頁面'>
                    </TouchableButton>
                </View>

                <View style={{flex:1,flexDirection:'row',alignItems: 'flex-end',bottom:10}}>
                     <Text style={styles.style_view_unlogin}>
                         無法登入?
                    </Text>
                    <Text style={styles.style_view_register}>
                         新使用者
                    </Text>
                </View>
          </View>
        );
    }
}

const styles = StyleSheet.create({
  style_image:{
    borderRadius:45,
    height:70,
    width:70,
    marginTop:40,
    alignSelf:'center',
  },
  style_user_input:{
      backgroundColor:'#fff',
      marginTop:10,
      height:45,
  },
  style_pwd_input:{
      backgroundColor:'#fff',
      height:45,
  },
  style_view_commit:{
      marginTop:15,
      marginLeft:10,
      marginRight:10,
      backgroundColor:'#63B8FF',
      borderColor:'#5bc0de',
      height:45,
      borderRadius:5,
      justifyContent: 'center',
      alignItems: 'center',
  },
  style_view_button:{
      marginTop:15,
      marginLeft:10,
      marginRight:10,
      backgroundColor:'#63B8FF',
      borderColor:'#5bc0de',
      height:45,
      borderRadius:5,
      justifyContent: 'center',
      alignItems: 'center',
  },
  style_view_unlogin:{
    fontSize:15,
    color:'#63B8FF',
    marginLeft:10,
  },
  style_view_register:{
    fontSize:15,
    color:'#63B8FF',
    marginRight:10,
    alignItems:'flex-end',
    flex:1,
    flexDirection:'row',
    textAlign:'right',
  }
});

export default SecondPageComponent



相關推薦

React-native頁面實現

首先是index.android.js 我們需要用到Navigator來進行頁面的跳轉,所有的js檔案處於同一目錄下面, 在FirstPageComponent頁面中我們需要定義好引數: constructor(props) { super(props);

微信小程式實現頁面以及獲取的方法分析

本文例項講述了微信小程式實現頁面跳轉傳值以及獲取值的方法。分享給大家供大家參考,具體如下:在安卓中頁面跳轉傳值都是通過bundle,現在研究一下小程式的列表跳轉及頁面傳值。my.wxml<view class="container"> <view bind

頁面a到另一個頁面b,js實現頁面

要實現從一個頁面A跳到另一個頁面B,js實現就在A的js程式碼加跳轉程式碼 JS跳轉大概有以下幾種方式: 第一種:(跳轉到b.html)<script language="javascript" type="text/javascript">window.l

微信小程序——頁面

小程序 func data url ont bsp 需要 nav options 比如從index。wxml跳轉到aaa.wxml index.wml <navigator url="../aaa/aaa?id=1" > </navigator> 傳

UWP 頁面

nta avi prot navigate dto 控件 執行 received logs 如果涉及到頁面跳轉,一般用Frame這個控件來管理不同的頁面。 <Grid Name="RootGrid">    <Frame Name="RootFrame"

Vue + ElementUi 頁面的方法

element info vue 跳轉 body 9.png 分享圖片 nbsp .com       跳轉的頁面(接收):                跳轉的頁面(接收):    Vue + ElementUi 頁面跳轉傳值的方法

iOS開發(swift):頁面(續)

副標題:.xib檔案的介面與.storyboard的介面相互跳轉 一、.storyboard檔案的介面跳轉到.xib檔案的介面 0.回顧:沿用上一篇文章裡.storyboard的介面。現在要實現點選綠色介面(.storyboard)按鈕跳轉至新的藍色介面(.xib)。 1.下面

html頁面方法

本方法比較原始,不喜勿噴 //源頁面 Window.location.href="record.html?recId="+recId; 目標頁面 function getUrlParam (name) { var reg = new RegExp("(^|&)" +

vue中頁面的幾種方式

一、router-link URL路徑:http://localhost:8081/#/test?userid=1 <router-link :to="{path:'/test',query: {userid: id}}">跳轉</router

MUI框架開發HTML5手機APP(二)--頁面&底部選項卡切換

  概 述 JRedu   在上一篇部落格中,我們學習瞭如何使用Hbuilder建立一個APP,同時如何使用MUI搭建屬於自己的第一款APP,沒有學習的同學可以戳連結學習: http://www.cnblogs.com/jerehedu/p/7832808.html     今天這篇部落格,我們繼續深入學習

頁面,兩個頁面cookie

頁面之間傳值,cookie解決。很簡單很實用。 function wxShowAffirmWT(wtid){ document.cookie = "workTid="+workTid;//增加值對到

asp.net頁面的幾種方式

protected void Button1_Click(object sender, EventArgs e) { //使用querystring傳值 //Response.Redirect("b.aspx

微信小程式(5)--頁面(點選item

one頁面實現以下程式碼: 1,data-id="{{item.id}}"為標記列表的下標, item.id的來源與wx:for="{{ components }}"的列表渲染 bindtap="re

微信小程式頁面以及獲取方法

在安卓中頁面跳轉傳值都是通過bundle,現在研究一下小程式的列表跳轉及頁面傳值。 my.wxml <view class="container"> <view bindt

Django-頁面問題

一、情景     eg:檢視一條資料的詳情,需要跳轉頁面,並進行傳值二、思路方式1:觸發詳情按鈕時,Js獲取到該條資料的id值,並傳遞給url,後臺接受到該請求,通過id查詢到這條資料。並返回一個json串給前端。前端拿到資料進行處理,對映給頁面。方式2:觸發詳情按鈕時,同時

JavaScript_頁面

方式一:用快取進行傳值 // 儲存值 localStorage.setItem("jsonData","jsonDataValue"); // 獲取值 localStorage.getItem("jso

js頁面

頁面跳轉傳值是通過在url連結裡面用“?”追加引數值,進行頁面之間傳參,程式碼如下。頁面一(onepage.html)<!DOCTYPE html><html><head><meta charset="UTF-8"><ti

Intent 頁面

傳送方: Intent intent = new Intent(); intent.putExtra("name", "諸葛亮"); intent.putExtra("age", 50); intent.putExtra("IQ", 200.0f); intent.setC

vue頁面

play win created table 詳情 seq color use ESS 第一種方式:例:消息列表頁跳轉: methods: {   goTo(){     this.$router.push({       name:‘/My/Info‘,

頁面之間

class input script 之間 ntb nload cat new tle 頁面之間傳值: a.html <html> <head> <title> New Document </title>