Я заметил такое поведение при использовании пакета react-transition-group
в проекте gatsby, над которым я работаю. У меня есть список «тегов», которые добавляются в активный список, когда они выбираются из другого основного списка. Щелчок по тегу из основного списка добавляет его в активный список, а щелчок по тегу из активного списка удаляет его. В значительной степени, как вы ожидаете, что-то подобное будет работать.
Переход в работает просто отлично, но при переходе из теги перестраиваются странным образом. У нас есть пять тегов со следующими значениями:
- Dairy Free
- Вечеринка Food
- Размер семьи
- Низкий уровень холестерина
- Низкий натрий
Если щелкнуть тег Family Sized
, чтобы удалить его, произойдет следующее:
Family Sized
исчезает мгновенно
Low Cholesterol
и Low Sodium
мгновенно сдвигаются влево
- Последний тег изменяется на
Low Sodium
мгновенно
- Последний тег, теперь со значением
Low Sodium
переходов из
Ожидаемое поведение - тег Family Sized
переходит от того места, где он находится в середине группы. Следует отметить, что он работает нормально, если вы удалите тег last из активного списка, это происходит только при удалении тега из любой другой позиции.
Вот замедленный GIF перехода и вот мой код:
<TransitionGroup className='tag-container'>
{filter.map((tag, index) => {
return (
<CSSTransition key={index} timeout={250} classNames={`tag`}>
<TagButton value={tag} onClick={onClickFunction} className={`${screenStyle} active`}>{tag}</TagButton>
</CSSTransition>
)
})}
</TransitionGroup>
filter
- массив, деструктурированный из состояния компонента.
- Существует
<StaticQuery>
из gatsby
, используемый в том же методе render()
компонента, если это имеет значение.
-
<TagButton>
- это стилизованный компонент из пакета styled-components
, а не отдельно импортируемый компонент.