reactjs - 使用阶段设置 React 过渡组的 classNames
问题描述
我正在使用 React 过渡组。我有 stateclassFade
和一组classNames
React Transition Group = classFade
。我想要当我点击下一个按钮时,classFade='fadeRight'
内容会向右淡出。当我单击上一个按钮时,classFade='fadeLeft'
内容将向左淡出。但是反应过渡组采用以前的值,而不是我传递后的值。例如,当我点击下一步按钮时,它接收到我原来的classFade
空值,而不是'fadeRight'
,只有当再次点击下一步按钮时,它才会成功。
我的舞台:
const [items, setItems] = useState(
{ id: uuid(), text: 'Buy eggs', classFade: '' }
);
反应过渡组:
<TransitionGroup>
<CSSTransition
key={items.id}
timeout={500}
classNames={items.classFade}
>
{items.text}
</CSSTransition>
</TransitionGroup>
单击下一步按钮时的示例:
setItems({
id: uuid(),
text,
classFade: 'fadeRight',
});
您可以在此处查看完整代码并运行演示:https ://codesandbox.io/s/transitiongroup-component-8x520
解决方案
我的问题在https://github.com/reactjs/react-transition-group/issues/182中解决了。他们应该将此添加到文档中-.-
//This returns a childFactory to provide to TransitionGroup
const childFactoryCreator = (classNames) => (
(child) => (
React.cloneElement(child, {
classNames
})
)
);
<TransitionGroup
childFactory={childFactoryCreator(condition ? "anim1" : "anim2)}
>
<CSSTransition
key={key}
classNames={condition ? "anim1" : "anim2"}
>
//Item that gets transitioned goes here
</CSSTransition>
</TransitionGroup>
推荐阅读
- kotlin - compareValuesBy() 如何在 kotlin 中工作?
- javascript - 在 mouseleave 上删除除 Javascript 中的所有类之外的所有类
- python - ValueError:协议未提供给试图使用 O365 发送电子邮件的 Api 组件
- android - 无法在 Android Studio 北极狐中导入模块
- ibm-integration-bus - IBM App Connect Enterprise - 使用 ESQL 删除默认标头
- python - 如果python dict get方法不匹配如何通过
- reactjs - 将 Wordpress 列表页面与单独的反应仪表板结合起来是个好主意吗?
- python - python UTC日期和sqlalchemy
- java - 如何停止绑定到 kafka 集群的消费者组,然后以编程方式重置/移动它的偏移量
- c# - 反序列化 Json 响应