реакционно-переходная группа условно одушевлена - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь использовать react-transition-group, чтобы добавить анимацию в список, который у меня есть.

Это мои общие настройки, у меня есть компонент списка, который отображает несколько дочерних элементов. Существует ряд взаимодействий, которые приводят к добавлению / удалению элементов из этого списка. Некоторые из этих действий должны привести к удалению компонента с использованием анимации, но я не могу заставить его работать, и я предполагаю, что, возможно, я что-то здесь упускаю.

Это мои основные настройки:

<TransitionGroup className="list" component="ul">
   {this.props.item.map(item => (
      <CSSTransition key={item.id} timeout={500} classNames="fade" enter={false} exit={!!item.shouldAnimate}>
        <ChildComponent/>
      </CSSTransition>
    ))}
</TransitionGroup>

Я проверил, что в моей логике состояния все в порядке (т. Е. shouldAnimate установлен на true, как я ожидаю, но он все еще не анимируется.

Есть предложения?

Edit: Создал скрипку, показывающую проблему, и я думаю, что теперь я вижу проблему. http://jsfiddle.net/af0ee2eo/2/

Как я описал выше, я не знаю, пока пользователь не предпримет действие, должно ли это действие быть тем, которое заставляет элемент анимироваться или нет, когда он удаляется из списка. Я правильно устанавливаю shouldAnimate, но перед следующим рендером я удаляю этот элемент из списка. Если я откладываю удаление до следующего рендеринга, все работает нормально, но это раздражает, когда приходится делать каждый раз (это то, что я демонстрирую с помощью флажка «Использовать задержку?» Внизу скрипки). Хотелось бы, чтобы был способ ввести состояние в состояние элемента, содержащегося в состоянии компонента TransitionGroup.

Если у кого-то есть другие идеи, как я могу исправить это без setTimeout или requestAnimationFrame рендера, дайте мне знать, в противном случае я просто отмечу этот вопрос как ответивший.

1 Ответ

0 голосов
/ 14 мая 2018

Я понял это, и на всякий случай, если кто-то еще придет и увидит это, ответ - использовать опору childFactory. Это позволяет вам изменять значения опор при уходе с детей.

Ссылка с дополнительной информацией: https://medium.com/lalilo/dynamic-transitions-with-react-router-and-react-transition-group-69ab795815c9

...