Я пытаюсь сделать 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)
Я не сильно меняю состояние, тогда почему это происходит?
Спасибо:)