StackNavigator:

原理和浏览器相似但又有局限,浏览器的方式是开放性的,通过点击一个链接可以跳转到任何页面(push),
点击浏览器后退按钮,返回到前一个页面(pop)。
StackNavigator也就是一个路由栈, 这个路由栈的原理和浏览器一样,跳转到一个新页面 push,返回就是pop,
有一个明显的区别是,浏览器中的链接有无数个,点击就可以跳转,不需要实现声明有哪些链接。
在StackNavigator中,必须事先声明这个app中有哪些页面(对应浏览器中的链接),你不能跳转到一个没有事先声明的
页面(即便这个页面在app中存在)。声明的第一个页面默认进入路由栈。
简单用法:

import { StackNavigator } from 'react-navigation';
import Page1 from './page1'
import Page2 from './page2'
import Page3 from './page3'

export default StackNavigator({
    //声明列表:
    //路由名:{页面:页面组件}
    Page1: { screen: Page1},
    Page2: { screen: Page2},
    Page3: { screen: Page3}
},{/*其他的配置*/});

所有在 StackNavigator 中声明的页面,都自动绑定了一个 navigation 属性,
navigation是一个对象,包含很多方法和属性,常用的 就是跳转到新页面和返回:

class Page1 extends Component {
  render() {
    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text>Page2 Screen</Text>
        <Button
          title="Go to Page2... again"
          //跳转到Page2页面
          onPress={() => this.props.navigation.navigate('Page2')}
        />
        <Button
          title="Go back"
          //返回上一个页面
          onPress={() => this.props.navigation.goBack()}
        />
      </View>
    );
  }
}

跳转页面是可以附带参数的,比如:
this.props.navigation.navigate('Page2',{name:'lisa',age:28})
在Page2页面可以通过 this.props.navigation.state.params.name获取对应的值

有些没有在 StackNavigator 中声明的组件页面,无法获取到 navigation 属性,想要
使用 navigation 有两个办法,通过父组件传递 navigation 属性,还可以通过下面这种方式:

import { withNavigation } from 'react-navigation';

class MyBackButton extends React.Component {
  render() {
    return <Button title="Back" onPress={() => { this.props.navigation.goBack() }} />;
  }
}

export default withNavigation(MyBackButton);

StackNavigator 深度连接 (在浏览器或者其他app中通过url链接唤醒 app到指定页面)
文档介绍:https://reactnavigation.org/docs/deep-linking.html

最新文章

  1. nfs挂载配置
  2. 锋利的jQuery-读书笔记(二)
  3. 05.virsh命令的常用操作(kvm)
  4. Cucumber命令行接口
  5. 【ASP.NET 基础】ASP.NET内置对象
  6. (原+转)C++中的lambda表达式
  7. Linux 安装Nginx详细图解教程
  8. 在 SSIS package 中使用FTP
  9. c语言-经验之谈
  10. PHP SPL迭代模式
  11. Linux显示内存状态
  12. ACM Robot Motion
  13. 洛谷P4630 铁人两项--圆方树
  14. js 计算当年还剩多少时间的倒数计时 javascript 原理解析【复制到编辑器查看推荐】
  15. flask基础一
  16. 使用Maps与Sets处理集合的交差运算
  17. 【转载】浅谈38K红外发射接受编码
  18. 2014年11月17~11月18日,杨学明老师《企业IT需求收集和实施》内训在湖南长沙某酒店成功举办!
  19. Spring Cloud、Spring Boot与Docker 学习资料汇总
  20. ie被hao.360劫持的解决方法

热门文章

  1. Kruskal重构树入门
  2. angular懒加载
  3. Dynamics CRM Web API中的and和or组合的正确方式!
  4. 外媒评李开复的《AI&#183;未来》:四大浪潮正在席卷全球
  5. IDEA工具教程
  6. JavaScript中闭包的写法和作用详解
  7. 使用django 中间件在所有请求前执行功能
  8. 【原】Java学习笔记023 - 字符串缓冲区_正则表达式
  9. MFC打印
  10. socket接收大数据流