ReactCSSTransitionGroup: Почему не работает transitionAppear?

147
11 апреля 2019, 08:20

Пытаюсь сделать плавное появление/исчезновение уведомления, но не работает transitionAppear. Делаю добавление элемента(всплытие уведомления) на событие onBlur(после того, когда делаю клик за пределами инпута). Анимация во время leave работает плавно, а во время appear просто резко появляется без transition. В Реакте совсем недавно, не ругайтесь сильно:D

CodeSandbox: https://codesandbox.io/s/l26j10613q

P.S.
Если я добавлю ReactCSSTransitionGroup в alert.jsappear работает, но leave нет.

alert.js:

export default class Alert extends Component {
  render() {
    const { icon, text } = this.props;
    let classNames = "cards-wrapper-alert";
    return (
     <div className={classNames}>
       <Card zIndex="2">
         <Icon icon={icon} eClass="alert-message-icon"/>
         <Label text={text} fw="fw-medium" fs="fs-14" fc="c-dark"/>
       </Card>
     </div>
    );
  }
}

alert.css:

.alert-appear {
  max-height: 0;
  overflow: hidden;
}
.alert-appear.alert-appear-active {
  max-height: 80px;
  transition: max-height 300ms ease-in-out;
}
.alert-leave {
  max-height: 80px;
}
.alert-leave.alert-leave-active {
  max-height: 0;
  overflow: hidden;
  transition: max-height 300ms ease-in-out;
}

input.js:

<ReactCSSTransitionGroup
  component={this.prepareComponentForAnimation}
  transitionName="alert"
  transitionEnter={false}
  transitionAppear={true}
  transitionAppearTimeout={400}
  transitionLeaveTimeout={400}>
  {this.state.alert ?
    React.cloneElement(this.props.children, {
      icon: this.state.icon,
      text: this.state.text
    })
  : null}
</ReactCSSTransitionGroup>

Example:

Answer 1

Вопрос решён. Нужно было использовать transitionEnter вместо transitionAppear.

ReactCSSTransitionGroup предоставляет необязательный prop transitionAppear,
для добавления дополнительной фазы перехода на начальном монтировании компонента.

Вопрос решён здесь [En StackOverflow]

CodeSandbox - answer

READ ALSO
Ошибка &ldquo;&hellip;table2excel is not a function&rdquo;

Ошибка “…table2excel is not a function”

Пишу расширение для себя, которое конвертирует table на активной странице вкладки браузера в excel файл и сохраняетИспользую библиотеку table2excel

140
Обрезать часть строки js

Обрезать часть строки js

Есть строка такого типа "Дом на Вельяминовской (гМосква, (м

168
SQL запрос на поиск из строки

SQL запрос на поиск из строки

Есть строковая переменная под названием "object" она хранит в себе строку состоящую из двух других полей "name" и "model", например "object" = "Смартфон...

213
Как убрать скролл в мобильной версии [закрыт]

Как убрать скролл в мобильной версии [закрыт]

Подскажите, как убрать скролл в chrome на этой странице ссылка

199