Все компоненты

MotionHeight

Высота, которая следует за содержимым: сворачивание, разворачивание и изменения содержимого.

ВебReact NativeСодержимое и размер

Попробуйте

Подготовка примера…

Кратчайшее использование

Details.jsx
<button onClick={() => setOpen(!open)}>Details</button>
<MotionHeight open={open}>
  <Answer />
</MotionHeight>

Что он берёт на себя

  • Анимирует к реальной высоте содержимого, измеренной за вас.
  • Следует за содержимым, когда оно растёт или уменьшается в открытом состоянии.
  • Начинает с высоты на экране — даже посреди изменения.
  • При изменении размера страницы высота сразу подстраивается, а не отстаёт от новой ширины.
  • Закрытое содержимое остаётся смонтированным, но скрытым и неактивным, поэтому его состояние сохраняется.

Для чего подходит

  • Ответы в FAQ.
  • Раскрывающаяся группа настроек.
  • Список, общая высота которого должна анимироваться (оберните MotionList).

Props

ПропТипПо умолчаниюОписание
openbooleantruefalse сворачивает до нулевой высоты; содержимое остаётся смонтированным, но скрытым и неактивным.
childrenReactNodeСодержимое.
aselement'div'Элемент для рендера.
transitionTransitionspringКривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию.
onMotionComplete(open) => voidВыполняется с open, когда высота остановилась.

Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.

Веб и React Native

В вебе высоту воспроизводит Web Animations API, а содержимое сохраняет обычную раскладку.

В React Native view обрезает содержимое и анимирует высоту на драйвере JS, потому что высота — это раскладка.

Используется в примерах

Поиск

Начните вводить, чтобы искать в документации.