react-native使用react-navigation进行页面跳转导航

本文主要是介绍react-native使用react-navigation进行页面跳转导航,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先要确认已经配置好react-native的环境。

 

 
# 创建一个native应用,SimpleApp
# 然后进入项目目录 react-native init SimpleApp cd SimpleApp 
# 通过npm安装最新版本的react-navigation npm install --save react-navigation 
# 运行程序 react-native run-android

 

 

 

引入Stack Navigator

对于我们的应用程序,我们想要使用堆栈式导航器,因为我们想要一个概念的“堆栈”导航,其中每个新屏幕都放在堆栈顶部,然后从堆栈顶部移除一个屏幕。

 
import React from 'react';import {AppRegistry,Text,} from 'react-native';import { StackNavigator } from 'react-navigation';class HomeScreen extends React.Component {static navigationOptions = {title: 'Welcome world',};render() {return <Text>Hello, Navigation!</Text>;}}const SimpleApp = StackNavigator({Home: { screen: HomeScreen },});AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

 

屏幕的title在静态导航选项中是可配置的,在这里可以设置许多选项来配置导航器中的屏幕显示。

 

添加一个新的屏幕

 
class ChatScreen extends React.Component {static navigationOptions = {title: 'Chat with Lucy',};render() {return (<View><Text>Chat with Lucy</Text></View>);}}

 

然后在HomeScreen添加一个按钮,链接到ChatScreen

 

class HomeScreen extends React.Component {static navigationOptions = {title: 'Welcome',};render() {const { navigate } = this.props.navigation;return (<View><Text>Hello, Chat App!</Text><ButtononPress={() => navigate('Chat')}title="Chat with Lucy"/></View>);}

 

 

最后将添加的两个页面添加到StackNavigator中

const SimpleApp = StackNavigator({Home: { screen: HomeScreen },Chat: { screen: ChatScreen },});

 

在这里,可以传递参数,从HomeScreen传递

class HomeScreen extends React.Component {static navigationOptions = {title: 'Welcome',};render() {const { navigate } = this.props.navigation;return (<View><Text>Hello, Chat App!</Text><ButtononPress={() => navigate('Chat', { user: 'Lucy' })}title="Chat with Lucy"/></View>);}}

 

ChatScreen接收参数

class ChatScreen extends React.Component {// Nav options can be defined as a function of the screen's props:static navigationOptions = ({ navigation }) => ({title: `Chat with ${navigation.state.params.user}`,});render() {// The screen's current route is passed in to `props.navigation.state`:const { params } = this.props.navigation.state;return (<View><Text>Chat with {params.user}</Text></View>);}}

 

 

添加第三个页面,Three.js, ChatScreen跳转到Three

 
import React,{Component} from 'react';import {AppRegistry,Text,View,Button,} from 'react-native';class Three extends React.Component {static navigationOptions = {title: 'Three Sceen',};render() {const { goBack } = this.props.navigation;return (<Buttontitle="Go back"onPress={() => goBack()}/>);}}export default Three;

 

修改ChatScreen的配置

class ChatScreen extends React.Component {static navigationOptions = {title: 'Chat with Lucy',};render() {const { navigate } = this.props.navigation;return (<View><Text>Chat with Lucy</Text><ButtononPress={() => navigate('Three')}title="to to ThreeScreen"/></View>);}}

 

最后的结果如下:

 

 

 

 

 

 

 

最后给出完整代码

 

文件 index.android.js

i

mport SimpleApp from './App';

 

文件App.js

import React from 'react';import {AppRegistry,Text,View,Button,} from 'react-native';import { StackNavigator } from 'react-navigation';import ThreeScreen from './Three.js';class HomeScreen extends React.Component {static navigationOptions = {title: 'Welcome',};render() {const { navigate } = this.props.navigation;return (<View><Text>Hello, Chat App!</Text><ButtononPress={() => navigate('Chat')}title="Chat with Lucy"/></View>);}}class ChatScreen extends React.Component {static navigationOptions = {title: 'Chat with Lucy',};render() {const { navigate } = this.props.navigation;return (<View><Text>Chat with Lucy</Text><ButtononPress={() => navigate('Three')}title="to to ThreeScreen"/></View>);}}const SimpleApp = StackNavigator({Home: { screen: HomeScreen },Chat: { screen: ChatScreen },Three: { screen: ThreeScreen},});AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

 

文件Three.js

import React,{Component} from 'react';import {AppRegistry,Text,View,Button,} from 'react-native';class Three extends React.Component {static navigationOptions = {title: 'Three Sceen',};render() {const { goBack } = this.props.navigation;return (<Buttontitle="Go back"onPress={() => goBack()}/>);}}export default Three;

 

 

这篇关于react-native使用react-navigation进行页面跳转导航的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044167

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

JavaScript全屏,监听页面是否全屏

在JavaScript中,直接监听浏览器是否进入全屏模式并不直接支持,因为全屏API主要是关于请求和退出全屏模式的,而没有直接的监听器可以告知页面何时进入或退出全屏模式。但是,你可以通过在你的代码中跟踪全屏状态的改变来模拟这个功能。 以下是一个基本的示例,展示了如何使用全屏API来请求全屏模式,并在请求成功或失败时更新一个状态变量: javascriptlet isInFullscreen =

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主