Roots
Content
The root is where the application layout structure is defined. It is typically the first UI element a user interacts with.
The root can be changed multiple times during the lifespan of the application.
For example, if an app requires users to login, it's common to use a stack-based root and transition to either tabs- or SideMenu-based root if login is successful.
Roots are located in src/navigation/roots.ts
.
Each root is being exported separately.
Starting root
The starting root is setInitialRoot
which shows Splash
.
Switching roots
As shown in Splash
based on whether user opened application first time or second time it switches the root to tabs
or onboarding
:
export const Splash: NavigationFunctionComponent = () => {
const isOnboardingVisited = useAppSelector((state) => state.system.isOnboardingVisited);
useEffect(() => {
if (isOnboardingVisited) {
setTabsRoot();
} else if (isIos) {
setTabsRoot(showOnboarding);
} else {
setOnboardingRoot();
}
}, [isOnboardingVisited]);
return <LoadingComponent />;
};