在静态布局内反应导航选项卡导航器

时间:2018-05-01 05:39:31

标签: react-native react-navigation

我能实现这种布局吗?

布局草图:

enter image description here

标题部分在所有标签中共享。它是此屏幕中布局的一部分。 每个标签都包含一个scrollView。

顺便说一下,我已经尝试将tab导航器定义为一个组件,并在render方法中使用它,以及静态头组件。

render() {
  return ( 
    <StaticHeaderComponent />
    <MyTabNavigator />
  ) 
}

不起作用。标签导航器根本不呈现。

2 个答案:

答案 0 :(得分:1)

这是一个简单的工作示例:

MyTabNavigator.js

import React, { Component } from 'react'
import { View, Text, ScrollView } from 'react-native'
import { TabNavigator } from 'react-navigation'

class FirstTab extends Component {
    render() {
        return (
            <ScrollView>
                <Text>first tab</Text>
            </ScrollView>
        )
    }
}

class SecondTab extends Component {
    render() {
        return (
            <ScrollView>
                <Text>second tab</Text>
            </ScrollView>
        )
    }
}

const MyNavigator = TabNavigator({
    first: { screen: FirstTab },
    second: { screen: SecondTab }
},
{
    tabBarPosition: 'top'
})

export default MyNavigator

App.js

import React, { Component } from 'react'
import { View } from 'react-native'
import MyTabNavigator from './MyTabNavigator'

export default class App extends Component {
    render() {
        return (
            <View style={{flex: 1}}>
                <View // place your StaticHeaderComponent here
                    style={{height: 100, backgroundColor: 'green'}}
                />
                <MyTabNavigator/>
            </View>
        )
    }
}

答案 1 :(得分:0)

对于反应导航3. +文档的 常见错误 部分非常方便。您可以找到文档和示例here

具体来说,您需要公开static router并通过navigation作为道具。您可以根据需要进一步自定义标签样式。

const TabbyNavigator = createMaterialTopTabNavigator({   
  Tab: TabScreen,   
  AnotherTab: AnotherTabScreen
});

class SomeScreen extends React.Component {   
  static router = TabbyNavigator.router;

  render() {
    return (
      <TabbyNavigator navigation={this.props.navigation} />
    );   
  } 
}