详解js界面跳转与值传递


Posted in Javascript onNovember 22, 2016

本文实例实现的功能如下:注册页(Register.js),点击注册,跳到注册结果页(RegisterResult.js),并将注册的手机号传递过去,显示xx注册成功。

index.Android.js

'use strict'
import React, { Component } from 'react';
import { AppRegistry,Navigator,BackAndroid} from 'react-native';

var Register = require('./study/Register');
let RegisterResult = require('./study/RegisterResult');
var NaviModule = React.createClass({

  //告知Navigator模块,我们希望在视图切换时,用什么效果
  configureScene:function(route){
    return Navigator.SceneConfigs.FadeAndroid;
  },

  //告知Navigator模块,我们希望如何挂接当前视图
  renderScene:function(router,navigator){
    this._navigator = navigator;
    switch(router.name){
      case "register":
        return <Register navigator = {navigator}/>
      case "registerResult":
        return <RegisterResult telephoneNumber = {router.telephoneNumber} navigator = {navigator}/>

    }
  },

  //React的生命周期函数---组件被挂接时调用
  componentDidMount:function(){
    var navigator = this._navigator;
    BackAndroid.addEventListener('NaviModuleListener',()=>{
      if (navigator && navigator.getCurrentRoutes().length > 1) {
        navigator.pop();
        return true;
      }
      return false;
    });
  },

  //React的生命周期函数---组件被移除时调用
  componentWillUnmount: function(){
    BackAndroid.removeEventListener('NaviModuleListener');
  },

  render:function(){
    return (
      <Navigator
        initialRoute = {{name:'register'}}
        configureScene = {this.configureScene}
        renderScene = {this.renderScene} />
      );
  }

});

AppRegistry.registerComponent('FirstDemo', () => NaviModule);

注册页(Register.js)

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

let Dimensions = require('Dimensions');
let totalWidth = Dimensions.get('window').width;
let leftStartPoint = totalWidth * 0.1;
let componetWidth = totalWidth * 0.8;

let Register = React.createClass({

  getInitialState:function(){
    return {
      inputedNum :'',
      inputedPW:'',
  },

  updatePW: function(newText){
    this.setState({inputedPW : newText});
  },

 render: function() {
  return (
   <View style={styles.container}>
    <TextInput style = {styles.numberInputStyle}
     placeholder = {'请输入手机号'}
     onChangeText = {(aa) => this.setState({inputedNum :aa})}/>
    <Text style={styles.textPromptStyle}>
     您输入的手机号:{this.state.inputedNum}
    </Text>
    <TextInput style={styles.passwordInputStyle}
     placeholder = {'请输入密码'}
     password = {true}
     onChangeText = {(newText) => this.updatePW(newText)}/>
    <Text style={styles.bigTextPrompt}
     onPress = {this.userRegister}>
     注 册
    </Text>
   </View>);
 },

 userRegister:function(){
  this.props.navigator.replace({
   telephoneNumber : this.state.inputedNum,
   name: 'registerResult',
  });
 }

});

const styles = StyleSheet.create({
 container: {
  flex: 1,
  flexDirection:'column',
  justifyContent: 'center',
  backgroundColor: '#F5FCFF',
 },
 numberInputStyle:{
  top:20,
  left:leftStartPoint,
  width:componetWidth,
  backgroundColor:'gray',
  fontSize:20
 },
 textPromptStyle:{
  top:30,
  left:leftStartPoint,
  width:componetWidth,
  fontSize:20
 },
 passwordInputStyle:{
  top:50,
  left:leftStartPoint,
  width:componetWidth,
  backgroundColor:'gray',
  fontSize:20
 },
 bigTextPrompt:{
  top:70,
  left:leftStartPoint,
  width:componetWidth,
  backgroundColor:'gray',
  color:'white',
  textAlign:'center',
  fontSize:60
 }
});

module.exports = Register;

注册结果页RegisterResult.js

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

let RegisterResult = React.createClass({

  render:function(){
    return(
      <View style = {styles.container}>
        <Text style = {styles.text}>
          {this.props.telephoneNumber}注册成功
        </Text>
      </View>
    );
  }

});

const styles = StyleSheet.create({
  container: {
  flex: 1,
  flexDirection:'column',
  justifyContent: 'center',
  alignItems:'center',
  backgroundColor: '#F5FCFF',
 },
 text:{
  flexWrap:'wrap',
  backgroundColor:'gray',
  fontSize:20,
  paddingTop:10,
  paddingBottom:10,
  paddingLeft:25,
  paddingRight:25
 },
});

module.exports = RegisterResult;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在html页面上拖放移动标签
Jan 08 Javascript
javascript学习(一)构建自己的JS库
Jan 02 Javascript
javascript完美拖拽的实现方法
Sep 29 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
Node.js和MongoDB实现简单日志分析系统
Apr 25 Javascript
javascript制作的滑动图片菜单
May 15 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
Jun 09 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
Vue.js递归组件构建树形菜单
Dec 24 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
Ajax异步刷新功能及简单案例
Nov 20 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 #Javascript
JavaScript面向对象分层思维全面解析
Nov 22 #Javascript
浅析location.href跨窗口调用函数
Nov 22 #Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 #Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 #Javascript
基于js实现checkbox批量选中操作
Nov 22 #Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 #Javascript
You might like
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
python列表去重的二种方法
2014/02/14 Python
python发送邮件实例分享
2017/07/28 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
暑假实习求职信范文
2013/09/22 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
师德个人剖析材料
2014/02/02 职场文书
物业总经理岗位职责
2014/02/28 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
早会开场白台词大全
2015/06/01 职场文书
初一年级组工作总结
2015/08/12 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python