Модуль: 4. Разработка
Урок 4. Модальные окна
Главное в уроке
- •
Модальные окна блокируют доступ к другим экранам приложения до тех пор, пока они открыты. Всплывающие окна похожи на модальные, но используются для отображения информации другого характера.
- •
Для создания модального окна:
- •
Используйте компонент
ModalRootбиблиотеки VKUI. В нём определите один или несколько компонентовModalPage, каждый из которых соответствует одному модальному окну.TypeScriptexport const AppModalRoot = () => { ... return ( <ModalRoot activeModal={activeModal} onClose={onClose}> <ModalPage id={EModal.DISH} onClose={onClose}> <DishModal onClose={onClose} /> </ModalPage> </ModalRoot> ); };Вместо
ModalPageможно использоватьModalCard. - •
Передайте созданный компонент в
SplitLayout:TypeScriptexport const App = () => { <SplitLayout modal={<AppModalRoot />}> // ... </SplitLayout> }
- •
- •
Для модального окна можно определить маршрут. В этом случае оно будет показываться при переходе по этому маршруту. Модальное окно можно показать и без определения маршрута. Используйте для этого метод
RouteNavigator.showModal(...). Чтобы скрыть модальное окно, вызовитеRouteNavigator.hideModal(). - •
Для создания всплывающих окон используйте компоненты
Alert,ActionSheet,ScreenSpinnerилиPopoutWrapperбиблиотеки VKUI.TypeScriptconst OrderCancelPopout = ({ handleBackButton }: Props) => { ... return ( <Alert header="Прервать оформление заказа?" text="Данные будут утеряны" /> ); };Используйте хук
usePopout(), чтобы получить установленный popout, и передайте его вSplitLayout:TypeScriptfunction App() { const routerPopout = usePopout(); ... return ( <SplitLayout popout={routerPopout} ...>...</SplitLayout> ); }; - •
Чтобы показать всплывающее окно, вызовите
RouteNavigator.showPopout(...). Чтобы скрыть модальное окно, вызовитеRouteNavigator.hidePopout(). Всплывающее окно также скрывается при нажатии кнопки «Назад» в браузере или на мобильном устройстве.
Полезные ссылки
- •Клиентская часть (исходный код),
cмотрите фрагменты кода по #M4L4. - •
- •
- •
- •