Creat-React-Native-App简称CRNA.

在我开始入门RN时fb已经推出和Expo联合开发用于快速创建React Native应用的工具: Create-React-Native-App。以下是在CRNA开发起步时导航器跳转页面遇到的问题记录。

参考资料:React Native中文网

React Navigation

根据教程指导,写了最简单的导航条调用示例:

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之踩坑记录的更多相关文章

  1. React Native工作小技巧及填坑记录

    以下是本人在React Native开发工作中使用的一些小技巧,记录一下. 1.从网络上拉取下来的React Native缺少React和React Native库. 终端 1. cd 项目根目录 2 ...

  2. React Native APP结构探索

    APP结构探索 我在Github上找到了一个有登陆界面,能从网上获取新闻信息的开源APP,想来研究一下APP的结构. 附上原网址:我的第一个React Native App 具体来讲,就是研究一个复杂 ...

  3. React Native App设置&Android版发布

    React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...

  4. React Native & app demos

    React Native & app demos https://github.com/ReactNativeNews/React-Native-Apps https://github.com ...

  5. 利用 Create React Native App 快速创建 React Native 应用

    本文介绍的 Create-React-Native-App 是非常 Awesome 的工具,而其背后的 Expo 整个平台也让笔者感觉非常的不错.笔者目前公司是采用 APICloud 进行移动应用开发 ...

  6. [译] Facebook:我们是如何构建第一个跨平台的 React Native APP

    英文原文(需FQ):https://code.facebook.com/posts/1189117404435352/ 早些时候,我们介绍过iOS版的React Native. React Nativ ...

  7. React Native 导入原生Xcode项目总结与记录

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  8. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  9. IDFA踩坑记录

    IDFA踩坑记录: 1.iOS10.0 以下,即使打开“限制广告跟踪”,依然可以读取idfa: 2.打开“限制广告跟踪”,然后再关闭“限制广告跟踪”,idfa会改变: 3.越狱机器安装开发证书打的包, ...

随机推荐

  1. 【转】UBOOT——启动内核

    转自:https://www.cnblogs.com/biaohc/p/6403863.html 1:什么是UBOOT,为什么要有UBOOT? UBOOT的主要作用是用来启动linux内核,因为CPU ...

  2. NNIE(待尝试)

    马克 https://blog.csdn.net/ywcpig/article/details/85260752 https://blog.csdn.net/u011728480/article/de ...

  3. CF 937

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  4. DDD领域驱动设计初探(二):仓储Repository(上)

    前言:上篇介绍了DDD设计Demo里面的聚合划分以及实体和聚合根的设计,这章继续来说说DDD里面最具争议的话题之一的仓储Repository,为什么Repository会有这么大的争议,博主认为主要原 ...

  5. 组件通信 Provide&&inject

    在父组件中利用Provide 注入数据,在所有的子组件都可以拿到这个数据 可以在vue 中用来刷新页面 <!DOCTYPE html> <html lang="en&quo ...

  6. 在浏览器下载pdf,或者txt文档是会直接打开

    window.location.href = url会直接打开,解释大概是因为浏览器自身可以解析.pdf或者txt.解决方法如下: 本来就要用a标签里面加上download属性的,结果发现不行,就算了 ...

  7. IDEA unable to find valid certification path to requested target

    一.报错 Could not transfer artifact org.apache.maven.plugins:maven-install-plugin:pom:2.4 from/to alima ...

  8. react native 之 在现有的iOS工程中集成react native

    在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...

  9. jsp格工化日期

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> .当后台传过来的时 ...

  10. Thread的几种方法的使用

    1:setPriority() 设置线程的优先级,从1 到10.   5是默认的.  1是最低优先级. 10是最高优先级 public class MyThread01 implements Runn ...