Скорей всего вам будет достаточно передать свой компонент в свойство `popout` компонента [`SplitLayout`](#/SplitLayout),
+> который уже оборачивает в `PopoutWrapper`.
+>
+> Компоненты [`Alert`](#/Alert), [`ActionSheet`](#/ActionSheet)
+> и [`ScreenSpinner`](#/ScreenSpinner) также уже используют этот компонент.
+>
+> Если всё же есть потребность использовать компонент отдельно, то ориентируетесь на пример ниже.
+
+Компонент-обертка для отрисовки всплывающих окон с затемнением фона.
```jsx static
-import { PopoutWrapper } from '@vkontakte/vkui';
+import { PopoutWrapper, useScrollLock } from '@vkontakte/vkui';
-
- Some content
-;
-```
+const App = () => {
+ const [opened, setOpened] = React.useState(false);
+ const popout = opened ? Some content : null;
-Все всплывающие окна передаются в свойство `popout` компонента [`SplitLayout`](https://vkcom.github.io/VKUI/#/SplitLayout).
+ // Для улучшения UX, при открытии модального окна, стоит блокировать скролл страницы.
+ // Иначе у пользователя может быть два скролла: один на модальном окне, второй за ним.
+ useScrollLock(opened);
+
+ return (
+
+
My Awesome App
+
+ setOpened(event.checked)} />
+ {popout}
+
+ );
+};
+```
diff --git a/styleguide/pages/migration_v6.md b/styleguide/pages/migration_v6.md
index 2b58866954..f4ea535531 100644
--- a/styleguide/pages/migration_v6.md
+++ b/styleguide/pages/migration_v6.md
@@ -559,6 +559,12 @@ npx @vkontakte/vkui-codemods --help
+### [`PopoutWrapper`](#/PopoutWrapper)
+
+- Теперь, при использовании компонента напрямую, необходимо самостоятельно импортировать и вызывать `useScrollLock()` (см. [issue #4314](https://github.com/VKCOM/VKUI/issues/4314)).
+
+
+
### [`PullToRefresh`](#/PullToRefresh)
- До этого `runTapticImpactOccurred()` вызывался внутри компонента после вызова обработчика `onRefresh`.