混合开发的大趋势之一React Native之页面跳转

转载请注明出处:王亟亟的大牛之路

最近事情有点多,没有长时间地连贯学习,文章也停了一个多礼拜,愧疚,有时间还是继续学习,继续写!

还是先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android (最近还是保持日更,除非忙的起飞活着出去玩不然都是更的,不信你看)



废话不多,贴下运行效果

登陆前

登录成功后

部分代码借鉴:https://github.com/SpikeKing/WclNavigator



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
        })
      }

push类似于 我们平时的startActivity的行为,API介绍可以看http://facebook.github.io/react-native/docs/navigator.html



登陆成功了那就跳到了我们的首页

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等方法进行跳转

源码地址:https://github.com/ddwhan0123/ReactNativeDemo

时间: 2024-10-19 03:03:49

混合开发的大趋势之一React Native之页面跳转的相关文章

混合开发的大趋势之一React Native Height and Width (尺寸),Flexbox(位置关系)

转载请注明出处:王亟亟的大牛之路 上一篇讲了State (状态),Style(样式):http://blog.csdn.net/ddwhan0123/article/details/52240463 这一篇我们讲位置与尺寸,这些都捯饬好我们就可以搭完整的界面啦!!! 继续安利下我的收纳库,包你满意:https://github.com/ddwhan0123/Useful-Open-Source-Android 废话不说,继续学习 素材源于:https://facebook.github.io/r

混合开发的大趋势之一React Native TextInput (文本输入)

转载请注明出处:王亟亟的大牛之路 昨天发了个力发了3篇RN的,今天继续学习,终于有新的组件进入我们的视野,这一篇是"输入框"TextInput 继续安利,每天都在更新:https://github.com/ddwhan0123/Useful-Open-Source-Android TextInput TextInput是允许用户输入文本的基础组件. 他有一些属性可以来帮助我们处理业务逻辑诸如onChangeText onSubmitEditing 等等 类似于Android 的Edit

混合开发的大趋势之一React Native Props (属性)

转载请注明出处:王亟亟的大牛之路 还是老规矩,先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android 坚持尽量每天更 昨天翻了点RN的第三方库,感觉歪果仁的一些项目和"大公湿"都已经 7 8成完全应用到自己的产品,感觉不加快学习进度不行了,这里也会加快更迭和学习进展,当然还是从官方DOC给大家介绍,没有任何JS基础的也可以跟得上 内容来源于 https://facebook.github.io/react-native/

混合开发的大趋势之一React Native State (状态),Style(样式)

转载请注明出处:王亟亟的大牛之路 先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android 今天又加了几个疑难杂症哦!! 上一篇讲了属性,这一篇主要讲 State Style,给出上次的传送门,以便有更好的连贯性:http://blog.csdn.net/ddwhan0123/article/details/52238478 State 状态 在RN中用来描述对象的除了属性Props还有状态State,那么状态又是个什么东西呢? T

浅谈移动应用的跨平台开发工具(Xamarin和React Native)

谈移动应用的跨平台开发不能不提HTML5,PhoneGap和Sencha等平台一直致力于使用HTML5技术来开发跨平台的移动应用,现在看来这个方向基本算是失败的,基于HTML5的移动应用在用户体验上与原生应用仍然存在着明显的差距. 与上述HTML5平台不同,Xamarin和React Native通过各自的方式来实现跨平台.Xamarin基于Mono框架将C#代码编译为原生平台代码,React Native则是在UI主线程之外运行一个JavaScript线程,两者呈现给用户的都是原生体验. 笔者

React Native之ViewPagerAndroid跳转页面问题

前言: 网上目前react-native的教程较少,加上许多帖子还是用的ES5(2015年6月已发布ES6标准),有些细节很难找到答案,这里把遇到的问题做一个分享,让学习者尽量少踩坑. 出现问题: 1.怎么获取ViewPager控件 2.怎么定义函数,使用setPage(),去跳转页面. 3.在使用了bind()的情况下,函数怎么传参. 解决方法: 步1.使用ref获取真实的DOM节点,类似去给控件设置id. <ViewPagerAndroid style={styles.pageStyle}

[技术博客]React Native——HTML页面代码高亮&amp;数学公式解析

问题起源 原有博文显示时代码无法高亮,白底黑字的视觉效果不好. 原有博文中无法解析数学公式,导致页面会直接显示数学公式源码. 为了解决这两个问题,尝试了一些方法,最终利用开源类库实现了页面美化. (失败的)尝试方案 通过API https://api.cnblogs.com/api/blogposts/博文ID/body 获取到博文的内容. 断点得到内容之后发现是原有markdown形式博文转换后的HTML,比如: <h2 id="github地址">1. GitHub地址

React Native 实现页面动态切换

第一步. 初始化子View constructor(props){ super(props); this.state = { isChange : true, itemView : (<Text>测试1</Text>), } }; 第二步. 在render中 <View style={{flex:Util.ScreenHeight-128,justifyContent: 'flex-start',}}> {this.state.itemView} </View&g

安装android Studio和运行react native项目(跳坑篇)

1.需配环境变量,值为sdk的地址. ANDROID_HOME  值:E:\Users\HP\AppData\Local\Android\sdk 2.下载gradle-2.14.1-all.zip 包 修改地址为本地gradle压缩包的地址,这里应该注意路径不可有带空格的,比如Program Files是会出错的. 先打开在android Studio导入项目 要导入项目android目录下才有效,如E:\Project\RN\AwesomeProject\android 启动模拟器 cmd 在