React-Navigation 嵌套导航器

在移动app开发中,有各种形式的导航。导航组件中导航器和路由器是可以组合的,这样就可以定制你需要的导航组件了。

选项卡导航

效果截图:
作为一个顶层导航器

_ZOKLTB$)94_%N9PD5Q9P{A.png

嵌套在导航器中

J~%T{K7MW%~4HYZTXT)D(FC.png

对于页面内组件暂时还未找到好的方法。

1.顶层切换卡
index.android.js


import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button
} from 'react-native';
import Tab from './tab';
class HomeScreen extends Component {
  render() {
    return (
          <Tab />
    );
  }
}

AppRegistry.registerComponent('tang', () => HomeScreen);

tab.js

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button
} from 'react-native';
import { TabNavigator,StackNavigator } from "react-navigation";

import { ChatScreen } from "./app";
class RecentChatsScreen extends React.Component {
  render() {
    return (
      <Text>作为单独组件123</Text>
    )
  }
}

class AllContactsScreen extends React.Component {
  render() {
    return <Text>作为单独组件2</Text>
  }
}

const MainScreenNavigator = TabNavigator({
  Recent: { screen: RecentChatsScreen },
  All: { screen: AllContactsScreen },
});


export default MainScreenNavigator;

1.和导航器嵌套

tab.js

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button
} from 'react-native';
import { TabNavigator,StackNavigator } from "react-navigation";

import { ChatScreen } from "./app";
class RecentChatsScreen extends React.Component {
  render() {
    return (
      <Text>作为单独组件123</Text>
    )
  }
}

class AllContactsScreen extends React.Component {
  render() {
    return <Text>作为单独组件2</Text>
  }
}

const MainScreenNavigator = TabNavigator({
  Recent: { screen: RecentChatsScreen },
  All: { screen: AllContactsScreen },
});

MainScreenNavigator.navigationOptions = {
  title: 'My Chats',
};

ChatScreen.navigationOptions = {
  title: 'My Chats',
};

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

export default SimpleApp;

app.js

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button
} from 'react-native';

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

export  class HelloScreen extends Component {
  static navigationOptions = {
    title: 'Hello',
  };
  render() {
    return (
      <View>
        <Text>Hello 组件 </Text>
      </View>
    );
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,870评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,192评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 教你如何写模块(循序渐进) 写法一:函数即模块 优点:简单易懂缺点:每个函数都是全局的,太多全局变量,容易代码冲突...
    chihei阅读 275评论 0 2
  • 注: Step Into,单步执行,遇到子函数就进入并且继续单步执行 Step Over,单步执行时,在函数内遇到...
    HelloVass阅读 388评论 0 1