Route `router` should declare a screen

172
26 февраля 2018, 03:12

Пытаюсь скомбинировать Stack Navigator и Tab Navigator. В TabNav должен содержаться стек HomeStack и экран Details. Сам же TabNav находится в стеке StacksOverTabs вместе с другим стеком StartStack. Выходит данная ошибка:

screens.js

import CategoriesList from 'modules/Categories/List/screens/list'
import CategoryPreview from 'modules/Categories/Preview/screens/preview'
import Start from 'modules/Login/screens/start'
import LogIn from 'modules/Login/screens/login'
import SignUp from 'modules/Login/screens/signup'
import Details from 'modules/Categories/Details/screens/details'
import { TabNavigator, TabBarBottom, StackNavigator } from 'react-navigation';

const HomeStack = StackNavigator({
    Home: {
        screen: CategoriesList,
    },
    CategoryPreview: {
        screen: CategoryPreview,
    },
});
const TabNav = TabNavigator(
    {
        MainTab: {
            screen: HomeStack,
        },
        Details: {
            screen: Details,
        },
    },
    {
        tabBarComponent: TabBarBottom,
        tabBarPosition: 'bottom',
        animationEnabled: false,
        swipeEnabled: false,
    }
);
const StartStack = StackNavigator({
    Start: {
        screen: Start,
    },
    LogIn: {
        screen: LogIn,
    },
    SignUp: {
        screen: SignUp,
    },
});
const StacksOverTabs = StackNavigator({
    Root: {
        screen: TabNav,
    },
    Start: {
        screen: StartStack,
    },
});
export default StacksOverTabs;

index.js

import React from 'react'
import PropTypes from 'prop-types'
import { StackNavigator, addNavigationHelpers } from 'react-navigation'
import { connect } from 'react-redux'
import { addNavigationListener } from '../redux/configureStore'
import  StacksOverTabs  from './screens'
const RootNavigation = StackNavigator(StacksOverTabs)
const initialState = RootNavigation.router.getStateForAction(
  RootNavigation.router.getActionForPathAndParams('Start')
)
const navReducer = (state = initialState, action) => {
  const nextState = RootNavigation.router.getStateForAction(action, state)
  return nextState || state
}
const Navigation = props => {
  return (
    <RootNavigation
      navigation={addNavigationHelpers({
        dispatch: props.dispatch,
        state: props.nav,
        addListener: addNavigationListener,
      })}
    />
  )
}
Navigation.propTypes = {
  dispatch: PropTypes.func,
  nav: PropTypes.object,
}
const mapStateToProps = state => ({
  nav: state.nav,
})
const NavigationWithState = connect(mapStateToProps)(Navigation)
export { NavigationWithState as Navigation, navReducer }
Answer 1

Я изменил в файле

index.js

`const initialState = RootNavigation.router.getStateForAction(
  RootNavigation.router.getActionForPathAndParams('Start')
)`

На

const initialState =  RootNavigation.router.getStateForAction(NavigationActions.reset({
    index: 0,
    actions: [  NavigationActions.navigate({routeName: 'Start'}),
    ],
}))

Больше ошибка не выходит, всё работает

READ ALSO
Как &ldquo;перехватить&rdquo; сигнал с сервера и перенастроить на своё значение?

Как “перехватить” сигнал с сервера и перенастроить на своё значение?

Предположим, что я нахожусь на странице mysiteru/login, где, нажав на кнопку "Войти", я активирую login() в javascript

207
Почему typeof &ldquo;4px&rdquo; - 2 возвращает NaN?

Почему typeof “4px” - 2 возвращает NaN?

Со скобками typeof ("4px" - 2) возвращает numberЭто понятно, поскольку typeof NaN это number

211
parseInt(null, 24) === 23. Почему?

parseInt(null, 24) === 23. Почему?

Каким образом преобразованные в число NaN и 24 трансформировались в 23?

225
Шифрование в JS

Шифрование в JS

Я так предпологаю что этот код расшифровывает строку, но как им можно воспользоваться? Я не особо понимаю в JS, поэтому прошу помощи

196