1

How to connect navigator created dynamically by the function call to redux? Depending on the authorization status (token != null), initial route of LoginNavigator is changing.

Code:

App.js

import createLoginNavigator from './navigators/LoginNavigator';

class App extends Component {
    render() {
        const LoginNavigator = createLoginNavigator(this.props.token !== null);
        return <LoginNavigator/>;
    }
}

const mapStateToProps = ({ auth }) => ({
    token: auth.get('token')
});

export default connect(mapStateToProps, null)(App);

Login navigator:

import LoginPage from '../pages/LoginPage';
import RootNavigator from '../navigators/RootNavigator';

export default createLoginNavigator = (authState) => StackNavigator({
    Login: { screen: LoginPage },
    RootNavigator: { screen: RootNavigator }
}, {
    initialRouteName: authState ? 'RootNavigator' : 'Login'
});

I can't just call this function in navigation reducer, because it will be other router:

import Navigator from '../navigators/LoginNavigator';

export const navReducer = (state, action) => {
    const nextState = Navigator.router.getStateForAction(action, state);

    return nextState || state;
};

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.