React Navigation предоставляет способ для вашего приложения переходить между экранами. Согласно вашему требованию Splash Screen -> LoginScreen -> HomeScreen (with Bottom Navigation)
вложенный стек навигации будет использоваться с StackNavigator
& amp; TabNavigator
.
для главного экрана необходимо создать StackNavigator:
const stackNavigationHome = createStackNavigator({ Home , HomeDetail});
Для экрана настроек StackNavigator, как показано ниже:
const stackNavigationSetting = createStackNavigator({ Settings},{headerMode: 'none'});
Оба Home
& amp; Экран Settings
будет отображаться в TabNavigator
:
const TabNavigator = createBottomTabNavigator({
home: stackNavigationHome,
settings: stackNavigationSetting,
});
В начальной точке стека вам потребуется навигация по стеку с логином и вкладкой, как показано ниже:
const stackNavigationLogin = createStackNavigator({ Login, TabNavigator},{headerMode: 'none'});
Структура навигации завершена здесь, теперь нужно создать контейнер приложения:
export default createAppContainer(stackNavigationLogin);
Вы можете найти полный источник на Github
Существует несколько вещей, которые могут происходить.
1) Обновление перестало работать, и NHibernate повышает исключение, которое глотают где-нибудь - который может произойти в зависимости от того, как Вы настроили вещи. Таким образом в VS удостоверяются, что все исключения вызовут повреждение.
2) Обновление кэшируется и не пишется непосредственно в DB - можно вынудить данные быть записанными с помощью Repository.Flush();
3) Вы - верный _projects [0], был считан из DB - я предполагаю, что это происходит в TestSetup? Если не NHibernate не будет знать об этом как об объекте, который находится под его 'контролем'.
BTW - Это - хорошая практика для чтения данных, которые Вы собираетесь изменить в самом тесте и затем отменить то изменение, сбрасывая DB к он - исходное состояние. Таким образом Ваш тест DB не будет изменен Вашим тестированием.
BTW2 - В вышеупомянутом тесте, если проект. Имя было уже обновлено однажды, т.е. тест работал успешно. Затем следующий раз вокруг теста успешно выполнится, даже если само обновление перестанет работать. Способ избежать этого - добавляет DateTime к проекту. Назовите, не устанавливайте его на фиксированное значение.
Другая вещь - это: когда Вы сохраняете объект с помощью сессии, и Вы загружаете тот же объект из той же сессии с помощью идентификатора объекта, Вы получите тот же экземпляр, который Вы сохранили - независимо от того, вставляет ли кто-либо, или обновления были выпущены к базе данных.
Поэтому 1-го кэша уровня NHIBERNATE, который является картой идентификационных данных, которая принадлежит сессии.
Если Вы хотите, чтобы Ваш тест проверил то, что было на самом деле записано в базу данных, можно сделать это как так:
session.Save(someEntity);
session.Flush(); // forces the entity to be inserted
session.Clear(); // clears the session's identity map, thus
// detaching someEntity from the session
var loadedEntity = session.Get<EntityType>(someEntity.Id);
// now you may compare the fields of someEntity and loadedEntity
// to verify that they were actually persisted
ISession.Update
в NHibernate не передает изменения в базе данных. Это используется для обновления переходных экземпляров на другой сессии от той, которая использовалась для получения экземпляра (см. здесь для деталей). Изменения отправляются в базу данных, когда сессия сбрасывается. По умолчанию сессии работают в режиме FlushOnCommit, что означает, что изменения в объектах будут отправлены в базу данных, когда транзакция NHibernate будет фиксироваться (см. здесь для получения дополнительной информации о различных режимах сброса).