Creat-React-Native-App 之StackNavigator之踩坑记录
Creat-React-Native-App简称CRNA.
在我开始入门RN时fb已经推出和Expo联合开发用于快速创建React Native应用的工具: Create-React-Native-App。以下是在CRNA开发起步时导航器跳转页面遇到的问题记录。
参考资料:React Native中文网
根据教程指导,写了最简单的导航条调用示例:
import React from 'react';
import { StyleSheet,
Text,
Button,
View,
} from 'react-native';
import {StackNavigator } from 'react-navigation'; export default class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
};
render() {
return (
<Text>Hello, Navigation!</Text>;
);
}
}
正确运行效果应对如上图,然而我的运行效果并没有title,只有 Text,这里记为问题一。
继续按照教程往下走,新增一个页面用于跳转。
import React from 'react';
import { StyleSheet,
Text,
Button,
View,
} from 'react-native';
import {StackNavigator } from 'react-navigation'; class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
};
render() {
const { navigate } = this.props.navigation;
console.log(navigate);
return (
<View>
<Text>Hello, Chat App!</Text>
<Button
onPress={() => navigate('Chat', { user: 'Lucy' })}
title="Chat with Lucy"
/>
</View>
);
}
} class ChatScreen extends React.Component {
static navigationOptions = ({ navigation }) => ({
title: `Chat with Lucy`,
});
render() {return (
<View>
<Text>Chat with Lucy</Text>
</View>
);
}
}
export default
const AwesomeProject = StackNavigator({ Home: { screen: HomeScreen }, Chat: { screen: ChatScreen } }
在这套代码下我先后遇到了多个错误:
Route 'Chat' should declare a screen. For example: ...etc
undefined is not an object (evaluating 'this.props.navigation.navigate')
......
仔细查看教程发现代码并没有不同,多番尝试后终于找到解决方法!! 原贴参考:React Native - navigation issue “undefined is not an object (this.props.navigation.navigate)”
按照帖子补充完代码后终于正常运行并一同解决了问题一,祭出代码:
import React from 'react';
import { StyleSheet,
Text,
Button,
View,
} from 'react-native';
import {StackNavigator } from 'react-navigation'; class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
};
render() {
const { navigate } = this.props.navigation;
console.log(navigate);
return (
<View>
<Text>Hello, Chat App!</Text>
<Button
onPress={() => navigate('Chat', { user: 'Lucy' })}
title="Chat with Lucy"
/>
</View>
);
}
} class ChatScreen extends React.Component {
static navigationOptions = ({ navigation }) => ({
title: `Chat with Lucy`,
});
render() {
return (
<View>
<Text>Chat with Lucy</Text>
</View>
);
}
} // AwesomeProject 是你的react native 项目名 注意:这块代码要放置到HomeScreen,ChatScreen...的下面否则会出错:Home不存在。
const AwesomeProject = StackNavigator({
Home: { screen: HomeScreen },
Chat: { screen: ChatScreen }
}
,{
initialRouteName: 'Home', // 默认显示界面
// header:{
// //导航栏可见
// visible : false,
// //左上角的返回键文字, 默认是上一个页面的title
// backTitle : "返回",
// //导航栏的style
// headerStyle: {
// backgroundColor: '#fff'
// },
// //导航栏的title的style
// titleStyle: {
// color: 'green'
// }
// },
// title : 'home',
// //导航栏的style
// headerStyle: {
// backgroundColor: '#fff'
// },
// //导航栏的title的style
// headerTitleStyle: {
// color: 'blue',
// //居中显示
// alignSelf : 'center',
// }, // //是否允许右滑返回,在iOS上默认为true,在Android上默认为false
// cardStack: {
// gesturesEnabled: true,
// },
// onTransitionStart: ()=>{ console.log('导航栏切换开始'); }, // 回调
// onTransitionEnd: ()=>{ console.log('导航栏切换结束'); }, // 回调
}); const AppNavigation = () => (
<AwesomeProject />
) export default class App extends React.Component {
render(){
return (
<AppNavigation/>
)
}
}
至于原理还没有研究,稍后如果弄明原理,再回来来补充。
Creat-React-Native-App 之StackNavigator之踩坑记录的更多相关文章
- React Native工作小技巧及填坑记录
以下是本人在React Native开发工作中使用的一些小技巧,记录一下. 1.从网络上拉取下来的React Native缺少React和React Native库. 终端 1. cd 项目根目录 2 ...
- React Native APP结构探索
APP结构探索 我在Github上找到了一个有登陆界面,能从网上获取新闻信息的开源APP,想来研究一下APP的结构. 附上原网址:我的第一个React Native App 具体来讲,就是研究一个复杂 ...
- React Native App设置&Android版发布
React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...
- React Native & app demos
React Native & app demos https://github.com/ReactNativeNews/React-Native-Apps https://github.com ...
- 利用 Create React Native App 快速创建 React Native 应用
本文介绍的 Create-React-Native-App 是非常 Awesome 的工具,而其背后的 Expo 整个平台也让笔者感觉非常的不错.笔者目前公司是采用 APICloud 进行移动应用开发 ...
- [译] Facebook:我们是如何构建第一个跨平台的 React Native APP
英文原文(需FQ):https://code.facebook.com/posts/1189117404435352/ 早些时候,我们介绍过iOS版的React Native. React Nativ ...
- React Native 导入原生Xcode项目总结与记录
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- IDFA踩坑记录
IDFA踩坑记录: 1.iOS10.0 以下,即使打开“限制广告跟踪”,依然可以读取idfa: 2.打开“限制广告跟踪”,然后再关闭“限制广告跟踪”,idfa会改变: 3.越狱机器安装开发证书打的包, ...
随机推荐
- ARM Cortex-M底层技术(1)—程序在Flash和SRAM的空间分配
1. keil编译介绍 当使用keil进行单片机的开发时,运行一段程序后,在output输出框会看到如下图的结果. 图1 keil 的output框 其中,Compiler编译器,使用的版本是 V5. ...
- python dict字典常用操作
字典的特性:key唯一无序 '''特性:key唯一:无序''' info = { 'stu1101': "安徽", 'stu1102': "北京", 'stu1 ...
- oracle删除数据文件
在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表.视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间. 一.使用offline数据文件的方法 非归档模式使用 ...
- MySQL简版(二)
第一章 表的约束 1.1 概念 对表中的数据进行限定,保证数据的正确性.有效性和完整性. 1.2 分类 主键约束:primary key. 非空约束:not null. 唯一约束:unique. 外键 ...
- LeetCode--079--单词搜索(python)
给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被重复使用. ...
- reverse/inverse a mapping but with multiple values for each key
reverse/inverse a mapping but with multiple values for each key multi mappping dictionary , reverse/ ...
- centos搭建lamp环境参考(根据腾讯云实验室)
1.安装MYSQL 使用 yum 安装 MySQL: yum install mysql-server -y 安装完成后,启动 MySQL 服务: service mysqld restart 设置 ...
- SQL—事物
[选择题]以下哪个选项是DBMS的基本单位,是构成单一逻辑工作单元的操作集合. A.进程 B.SQL C.事务 D.文件 分析: (1)一个事务包含一个或多个SQL语句,是逻辑管理的工作单元(原子单元 ...
- 前端HTTP缓存
Web 缓存大致可以分为:数据库缓存.服务器端缓存(代理服务器缓存.CDN 缓存).浏览器缓存.其中前端比较关心的是浏览器缓存,包括今天要说的HTTP缓存和前面说过的cookie.localStora ...
- (22)Python练习项目集
文本操作 逆转字符串——输入一个字符串,将其逆转并输出. 拉丁猪文字游戏——这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成 ...