В: ReactNative StackNavigator внутри DrawerNavigator

есть ли хороший пример без ошибок со StackNavigator внутри DrawerNavigator? Как и в моем примере, когда ящик открыт, верхний заголовок навигации скрыт, и я не могу открыть ящик (со слайдом), когда нахожусь на странице NewScreen. Поэтому я хочу открыть ящик над заголовком и с любой страницы. Спасибо

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);

person SERG    schedule 05.05.2017    source источник
comment
Выглядит открытым вопросом. Вы должны проверить комментарии для возможных обходных путей, хотя, прочитав их все, похоже, что в каждом решении есть какая-то ошибка.   -  person Michael Cheng    schedule 09.05.2017


Ответы (1)


Если я правильно понял ваши вопросы, вы хотите:

1) Чтобы иметь доступ к ящику с любой страницы

2) Ваш ящик для покрытия строки заголовка при открытии.

Для достижения первого места

Есть два способа сделать это:
а) Добавьте кнопку/значок, который запускает ящик при нажатии. Когда вы используете это решение, у вас по-прежнему не будет функции слайда слева, так как это явно контролируется DrawerNavigator
b) Добавьте NewScreen в свой Drawer, так как вы хотите иметь доступ ко всему ящику, когда вы находитесь на экране.

Чтобы получить номер 2

Это очень распространенная проблема при вложении DrawerNavigator в StackNavigator. Чтобы решить эту проблему, измените StackNavigator таким образом

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