В основном я из реакции-навигации v4, мне знакомо то же самое с SwitchNavigator в качестве моста, но v5 не поддерживает SwitchNavigator, поэтому немного изо всех сил пытается понять приведенную ниже реализацию. Приведенный выше код работает, но есть некоторые проблемы, например:
- При загрузке приложения ящик изначально виден и скрывается при загрузке приложения.
- Я не хочу иметь ящики для Экраны аутентификации. Если у меня есть 2 разных режима навигации без разделения AuthenticationStack и UserStack , тогда я столкнулся с проблемой при переходе с Войти в профиль и наоборот
ОБНОВЛЕНИЕ 1
export default() => {
const [logged, setUser] = React.useState(false);
return (
<NavigationContainer>
{
logged
?
<DrawerScreen initialParams={{ setUser }} />
:
<AuthStackScreen initialParams={{ setUser }} />
}
</NavigationContainer>
);
}
Теперь в логине. js, мне нужно обновить setUser до true, верно? Если да, то как я могу получить доступ к setUser в моем логине. js файл
Обновление 2
class Login extends Component {
fetch(login_url, {
method: "POST",
headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Accept-Language': 'en-US' },
body: JSON.stringify(data)
})
.then((response) => {
const success = response.ok;
const data = response.json();
return Promise.all([success, data]);
})
.then(([success, response]) => {
var data, userInfo;
if (success) {
data = {
token: response.token,
user: response.user,
}
if(_storeUserData(response)) {
_retrieveUserData().then((userInfo) => {
this.setState({
logged: true,
userInfo: userInfo,
loading:false,
email: '',
password: ''
});
navigate('Profile');
})
.catch((error) => {
// alert(error);
});
}
}
this.setState(state_data);
})
.catch((error) => {
alert('Error:'+error);
this.setState({ loading: false});
});
}