My structure is as follows:
- Switch navigator
- LoginScreen
- Drawer navigator
- Stack navigator
- ListTasksScreen
- Stack navigator
- ListDirectivesScreen
- Stack navigator
The app starts at the login screen. When logging in succeeds, I this.props.navigate()
to ListTasksScreen
and pass credentials to it.
However when the user now changes the screen by opening the drawer and pressing an item, parameters are lost. Without the credentials, I can't query an API.
Code:
export const app = createSwitchNavigator(
{
login: {screen: LoginScreen},
main: {screen: MainScreen},
},
{initialRouteName: "login"}
)
export class LoginScreen extends React.Component {
performLogin() {
this.props.navigation.navigate(
"listTasks",
{api: this.api, userId: response.id}
)
}
}
export const MainScreen = createDrawerNavigator({
listTasksStack: {screen: createStackNavigator({listTasks: ListTasksScreen})},
listDirectivesStack: {screen: createStackNavigator({listDirectives: ListDirectivesScreen})},
logout: {screen: LogoutScreen},
})
export class ListTasksScreen extends React.Component {
doSomething() {
this.props.navigation.getParam("api") // <-- Not available!
}
}
export class ListDirectivesScreen extends React.Component {}
export class LogoutScreen extends React.Component {}
Is there a way to pass parameters down to children, or access parent parameters? Or are there other approaches?