React Native: превышена максимальная глубина обновления - PullRequest
0 голосов
/ 03 сентября 2018

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

import { createSwitchNavigator } from "react-navigation"

import PrivateNavigator from "./private"
import PublicNavigator from "./public"

const Navigator = (signedIn = false) => {
  return createSwitchNavigator(
    {
      Private: {
        screen: PrivateNavigator,
      },
      Public: {
        screen: PublicNavigator,
      },
    },
    {
      initialRouteName: signedIn ? "Private" : "Public",
    },
  )
}

export default Navigator

Теперь о проблеме, после аутентификации, когда навигация переключается на Private, я думаю, экран заходит в бесконечный цикл

Вот мой личный маршрут

import React from "react"
import { createBottomTabNavigator } from "react-navigation"

import HomeScreen from "../screens/Home"

import FooterNavigation from "../components/FooterNavigation"

const privateNavigator = createBottomTabNavigator(
  {
    Home: {
      screen: HomeScreen,
    },
  },
  {
    initialRouteName: "Home",
    tabBarComponent: props => <FooterNavigation {...props} />,
  },
)

export default privateNavigator

Если я отрисовываю только главный экран, он работает нормально

import React, { Component } from "react"
import { Content, Container, Spinner } from "native-base"
import { fetchCategories } from "../../redux/actions"
import { connect } from "react-redux"

import CategoriesList from "./components/CategoriesList"

class Home extends Component<any, any> {
  componentDidMount() {
    this.props.fetchCategories()
  }

  render() {
    const { categories, isFetching, navigation } = this.props
    return (
      <Container>
        <Content padder>
          {isFetching ? (
            <Spinner />
          ) : (
            <CategoriesList categories={categories.data} navigation={navigation} />
          )}
        </Content>
      </Container>
    )
  }
}

const mapStateToProps = state => {
  return {
    ...state,
  }
}

export default connect(
  mapStateToProps,
  { fetchCategories },
)(Home)

А также AppContainer, где я называю навигацию

import React from "react"
import { connect } from "react-redux"
import Navigator from "../navigation"

class AppContainer extends React.Component<any, any> {
  render() {
    const { isLogged } = this.props.auth
    console.log(isLogged)

    const Layout = Navigator(isLogged)
    return <Layout />
  }
}

const mapStateToProps = state => {
  return {
    ...state,
  }
}

export default connect(
  mapStateToProps,
  {},
)(AppContainer)

Я не сильно меняю состояние, тогда почему это происходит?

Спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...