RouteNavigator.block
Устанавливает функцию для блокировки переходов с текущего экрана.
Пример
TypeScript
import { useRouteNavigator } from '@vkontakte/vk-mini-apps-router';
export function SomePage() {
const routeNavigator = useRouteNavigator();
// используем useCallback - чтобы ссылка на функцию не менялась
const blockerFunction: BlockerFunction = useCallback({
historyAction,
nextLocation
}) => {
let result : boolean;
if ( /* check conditions */ )
result = false;
else {
result = true;
// показываем сообщение
alert('Заполните данные, чтобы перейти');
}
// true — блокируем переход, false — разрешаем
return result;
}, []);
useEffect(() => {
// получаем функцию для удаления блокировщика
const unblocker = routeNavigator.block(blockerFunction);
// при unmount компонента удаляем блокировщик
return () => unblocker();
}, [blockerFunction])
return (<>...</>)
}Объявление
TypeScript
block(onLeave: BlockerFunction): () => void;Параметры
Параметр | Тип | Описание |
|---|---|---|
onLeave
обязательный | Функция, которую роутер будет вызывать каждый раз при попытке перехода с текущего экрана для проверки того, возможен переход или нет. Подробнее о параметрах этой функции и значении, которое она возвращает — в разделе Блокировка навигации. |
Результат
Метод block возвращает функцию, вызов которой приводит к удалению функции-блокиратора, переданной в параметре onLeave.
Материалы по теме
- •
- •
- •