We will build a typed routing navigation system for React apps without using external libraries, suitable for scenarios where simpler routing solutions make sense.
A custom routing foundation is developed for situations where traditional browser navigation isn't required, offering full control over the navigation experience.
Views are defined with path identifiers and optional state data, mimicking traditional routing systems but independent of browser features.
A generic Views type is created to map route identifiers to corresponding React components, ensuring type safety in the navigation system.
Navigation state management includes maintaining history of visited views and tracking the current position within the history stack.
The NavigationProvider component is used to initialize the navigation state with the currentIndex set to 0 and an initial view as the starting point.
A Layout component is implemented to provide a consistent container for all views, including a back button for backward navigation.
Hooks like useNavigateBack and useAppNavigate are developed to facilitate navigation and ensure type safety in navigating to different views.
The useNavigate hook powers the navigation system by managing history state and providing type-safe navigation functionality.
The ActiveView component renders the appropriate UI based on the current navigation state, dynamically displaying the active view component.