2017-05-05 43 views
0

有什么好的没有bug的StackNavigator例子在DrawerNavigator里面? 正如在我的示例中,当抽屉打开时,顶部导航标题被隐藏,当我在NewScreen页面内时,无法打开抽屉(带有幻灯片)。 所以我想打开标题和任何页面上的抽屉。 感谢Q:ReactNative StackNavigator里面的DrawerNavigator

http://image.prntscr.com/image/eb4d869acbcf4d22a08159b072aae930.png

下面是代码

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    Button, 
    Platform, 
    ScrollView, 
    StyleSheet, 
    TouchableHighlight, 
    Text, 
} from 'react-native'; 
import { 
    DrawerNavigator,StackNavigator 
} from 'react-navigation'; 

import FontAwesome from "react-native-vector-icons/FontAwesome"; 

class ScreenHome extends Component{ 
    static navigationOptions = { 
     title: 'ScreenHome', 
    }; 
    render() { 
     const { navigate } = this.props.navigation; 
     return (
      <Button 
       title="Go to Jane's profile" 
       onPress={() => navigate('New', { name: 'Jane' })} 
      /> 
     ); 
    } 
} 

class NewScreen extends Component{ 
    static navigationOptions = { 
     title: 'New screen', 
    }; 
    render() { 
     const { navigate } = this.props.navigation; 
     return (
      <Text>Some new screen</Text> 
     ); 
    } 
} 

class ScreenRegister extends Component{ 
    static navigationOptions = { 
     title: 'ScreenRegister', 
    }; 
    render(){ 
     return <Text>ScreenRegister</Text> 
    } 
} 

const MainScreenNavigator = DrawerNavigator({ 
    Recent: { 
     screen: ScreenHome 
    }, 
    All: { 
     screen: ScreenRegister 
    }, 
}); 

export default SimpleApp = StackNavigator({ 
    Home: { 
     screen: MainScreenNavigator 
    }, 
    Chat: { 
     screen: ScreenHome 
    }, 
    New: { 
     screen: NewScreen 
    } 
}); 

AppRegistry.registerComponent('naviTest',() => SimpleApp); 
+1

[看起来是个未解决的问题](https://github.com/react-community/react-navigation/issues/165)。您应该查看可能的解决方法的注释,但在阅读完所有解决方案后,看起来每个解决方案都存在某种错误。 –

回答

0

如果我正确地得到了你的问题,你想:

1)从任何网页

访问抽屉

2)打开时,抽屉盖上标题栏。

为了实现1号

有两种方法可以做到这一点,他们是:
一)添加一个按钮/图标触发上点击抽屉。当您使用此解决方案时,由于DrawerNavigator明确控制此功能,因此您仍然没有滑动功能。b)将NewScreen添加到抽屉中,因为您希望在屏幕内访问整个抽屉时

为了实现2号

这是一个很常见的问题中StackNavigator嵌套DrawerNavigator时。为了解决这个问题,请修改StackNavigator

export default SimpleApp = StackNavigator({ 
    Home: { 
     screen: MainScreenNavigator 
    }, 
    Chat: { 
     screen: ScreenHome 
    }, 
    New: { 
     screen: NewScreen 
    } 
}, { 
    navigationOptions: { header: false } 
});