You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В VKUI есть такая интересная тема, как запоминание позиции скролла панели, когда идешь вперед по истории и его восстановление, когда возвращаешься назад.
Но это работает именно со скроллом панели, но на панели могут быть и собственные сколящиеся боксы (css overflow scroll), которые так не умеют, а хотелось бы
Необходимо сделать компонет-обертку, который бы запоминал позицию скролла элемента и мог восстановить, при возвращении по истории назад.
Почему не хук
гораздо легче получить контекст панели внутри панели.
можно сразу добавлять несколько компонентов в панель и не заботиться о создании ref'a под каждый случай, так как refScrollSaver будет получить из children.
можно использовать только под условие
кол-во ScrollSaver может быть динамическим.
Требования
Интерфейc:
interfaceScrollSaverProps{/* Уникальный идентификатор элемента скролл которго надо запомнить Важно иметь id, так как возможно что на одной панели нужно запомнить позицию нескольких элементов. Два HorizontalScroll */id: string;/* Если передан реакт-компонент, то он должен поддерживать getRootRef. */children: React.ReactElement;/* Режим сохранения скролла: по умолчанию `forward` - позиция скролла сохраняется только при переходе вперёд. */saveMode: 'forward'|'always';}
важно добавлять уникальности в пределах панели/view.
иметь возможность управлять политикой сохранения позиции скролла - saveMode.
The text was updated successfully, but these errors were encountered:
Необходимо сделать компонет-обертку, который бы запоминал позицию скролла элемента и мог восстановить, при возвращении по истории назад.
Почему не хук
ref
ScrollSaver
будет получить из children.Требования
важно добавлять уникальности в пределах панели/view.
иметь возможность управлять политикой сохранения позиции скролла -
saveMode
.The text was updated successfully, but these errors were encountered: