Как использовать React-Transition-Group для отображения и скрытия модального / диалогового окна с анимацией?

javascript #reactjs #jsx #react-transition-group

#javascript #reactjs #jsx #react-transition-group

Вопрос:

Я создал модальный / диалоговый компонент, используя React и Tailwind . Вот codesandbox с моей проблемой.

Теперь я хотел бы показать и скрыть модальный режим с помощью красивой анимации, подобной этой здесь.

Я пытался создать это с помощью пакета react-transition-group.

Моя проблема

В настоящее время мне удалось заставить его работать только с entering dom, НО это при переносе всего Confirm.jsx компонента. Это не идеально, потому что это означало бы, что каждый раз, когда я хочу использовать Confirm.jsx где-то в своем приложении, я также должен обернуть его <CSSTransition> компонентом.

Итак, в идеале я хочу добавить <CSSTransition> компонент либо в Confirm.jsx или Dialog.jsx , но что бы я ни пытался, я не могу заставить их работать.

Чего мне здесь не хватает?

Ответ №1:

Вот небольшое изменение, которое я внес.

Я переместил CSSTransition в ваш Confirm компонент и удалил ранние возвраты в Confirm Dialog open состояние и когда false

Вы ничего не возвращали, когда open для состояния установлено значение null. Это отменяло вашу анимацию выхода. CSSTransition должен иметь что-то для рендеринга, чтобы он мог добавлять классы анимации выхода при выходе. После завершения анимации CSSTransition удаляет дочерний элемент из DOM, поскольку вы уже установили свойство unmountOnExit