React-встроенные нижние вкладки навигации для всех необходимых экранов

#react-native #react-navigation #navigationbar

#react-встроенная #реагировать-навигация #панель навигации

Вопрос:

Я работаю над нижней панелью навигации. Я следую этой документации:https://reactnavigation.org/docs/en/material-bottom-tab-navigator.html

Это работает хорошо, у меня есть 3 разных вкладки: Feed , Messages и Profile . Но с моего Feed экрана это приводит к другим экранам, таким как Post .

Проблема: Когда я нахожусь на Feed экране и нажимаю на Post , я перенаправляюсь на новую страницу (do display post), но на ней нет нижней панели. Пожалуйста, обратите внимание, что я не хочу включать Post в качестве вкладки. Я хочу иметь 3 вкладки: [Feed, Messages, Profile] но при Post загрузке панель навигации должна быть видна. Как мне этого добиться?

Обновить:

В ленте есть список вкладок, и при нажатии на публикацию я вызываю: this.props.navigation.navigate('Post ‘), чтобы загрузить новую страницу.

Определение потока:

  • [Главная страница] — Начальный экран
  • [Сообщение] — Экран сообщения
  • [Профиль] — Экран профиля
  • [Публикация] — Экран публикации
  • [Панель навигации] — Панель навигации включает в себя 3 кнопки, которые ведут к -> 3 различным экранам — Ленте, сообщению, профилю

Поток:

  • [Главная страница] содержит [панель навигации]
  • [Главная страница] ведет к -> [Лента] через панель навигации
  • [Главная страница] ведет к -> [Сообщение] через панель навигации
  • [Главная страница] ведет к -> [Профиль] через панель навигации
  • [Feed] ведет к -> [Post] с помощью обычного onPress()
  • [Сообщение] содержит [панель навигации]
  • [Публикация] ведет к -> [Лента] через панель навигации
  • [Сообщение] ведет к -> [Сообщение] через панель навигации
  • [Публикация] ведет к -> [Профиль] через панель навигации

Код:

 import React from 'react';
import {Text, StyleSheet, AsyncStorage} from 'react-native';

import { createSwitchNavigator, createStackNavigator, createAppContainer } from 'react-navigation';

import HomeScreen from "./screens/HomeScreen";
import OtherScreen from "./screens/OtherScreen";
import Feed from "./screens/post/Feed";
import SignInUpGender from "./screens/registration/SignInUpGender";
import {createStore} from 'redux';
import {Provider} from 'react-redux';
import {createMaterialBottomTabNavigator} from "react-navigation-material-bottom-tabs";

const MaterialBottomTabNavigator = createMaterialBottomTabNavigator(
    {
        Screen1: Feed,
        Screen2: Messages,
        Screen3: Profile,
    },
    {
        initialRouteName: 'Screen1',
        activeColor: '#f0edf6',
        inactiveColor: '#3e2465',
        barStyle: { backgroundColor: '#694fad' },
    }
);

const AppStack = createStackNavigator({
    Home: MaterialBottomTabNavigator,
    Other: OtherScreen
});
const AuthStack = createStackNavigator({
    SignInUp: {
        screen: SignInUpGender,
        navigationOptions: {
            header: null
        }
    }
});

const switchNavigator = createSwitchNavigator(
    {
        AuthLoading: AuthLoadingScreen,
        App: AppStack,
        Auth: AuthStack,
    },
    {
        initialRouteName: 'AuthLoading',
    });

const AppContainer = createAppContainer(switchNavigator);

const store = createStore(() => {});
class App extends React.Component{
    render (){
        return (
            <Provider store={store}>
                <AppContainer/>
            </Provider>
        )
    }
}

export default App;
  

Комментарии:

1. куда вы загружаете свой экран публикации в приведенном выше коде?

2. Пост @HendEl-Sahli только что загружен из ленты, я использую this.props.navigation.navigate(‘Публикация’) Я не уверен, как структурировать альтернативно. Пожалуйста, дайте совет.

3. пожалуйста, включите поток, который вы хотите иметь в текстовой форме … просто чистое объяснение… Я уверен, что это помогло бы получить идею, которой вы хотите достичь

4. @HendEl-Sahli спасибо, я обновил свой вопрос.

5. @WildGoat ты нашел какую-нибудь удачу в этом?