【发布时间】:2019-11-07 10:11:42
【问题描述】:
我在我正在处理的 gatsby 项目中使用 react-transition-group 包时注意到了这种行为。我有一个“标签”列表,这些“标签”是从另一个主列表中挑选出来的。单击主列表中的标签会将其添加到活动列表中,单击活动列表中的标签会将其删除。就像你期望的那样工作。
in 过渡效果很好,但是在过渡out 时,标签会以一种奇怪的方式重新组织自己。我们有五个具有以下值的标签:
- 不含乳制品
- 派对食品
- 家庭大小
- 低胆固醇
- 低钠
如果单击Family Sized 标记将其删除,则会发生以下情况:
-
Family Sized瞬间消失 -
Low Cholesterol和Low Sodium立即向左移动 - 最后一个标签立即变为
Low Sodium - 最后一个标签,现在的值是
Low Sodium过渡出来
预期的行为是Family Sized 标记从它在组中间的位置转换出来。我应该注意,如果您从活动列表中删除 last 标记,它会正常工作,这只发生在从任何其他位置删除标记时。
这是转换的slowed-down 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是一个从组件状态解构的数组。 - 如果重要的话,有一个来自
gatsby的<StaticQuery>用于组件的相同render()方法中。 -
<TagButton>是来自styled-components包的样式化组件,而不是单独导入的组件。
【问题讨论】:
标签: javascript reactjs gatsby react-transition-group