我试图让组件进入和离开时,该按钮被点击状态之间切换之间的过渡CSSTransitionGroup动画阵营与切换
我也试图把<UserDetails />
和<UserEdit />
作为单独的组件,但具有相同的结果因为没有动画被触发。
https://www.webpackbin.com/bins/-KjIPcMeQF3iriHRqTBW
Hello.js
import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup'
import './styles.css'
export default class Hello extends React.Component {
constructor() {
super()
this.state = { showEdit: false }
this.handleEdit = this.handleEdit.bind(this)
}
handleEdit() { this.setState({ showEdit: !this.state.showEdit }) }
render() {
const UserDetails =() => (
<div className="componenta" key="1">UserDetails</div>
)
const UserEdit =() => (
<div className="componentb" key="2">UserEdit</div>
)
return(
<div >
<CSSTransitionGroup
transitionName="example"
transitionEnterTimeout={10}
transitionLeaveTimeout={600}>
{this.state.showEdit ? <UserDetails /> : <UserEdit />}
</CSSTransitionGroup>
<button onClick={this.handleEdit}>Toggle</button>
</div>
)
}
}
styles.css的
.thing-enter {
opacity: 0.01;
transition: opacity 1s ease-in;
}
.thing-enter.thing-enter-active {
opacity: 1;
}
.thing-leave {
opacity: 1;
transition: opacity 1s ease-in;
}
.thing-leave.thing-leave-active {
opacity: 0.01;
}
感谢现在的解释更有意义,我,我怎么能阻止这两个组件从在同一时间,当显示在他们之间切换?目前它们在转换时出现在彼此之下,但是我希望它在相同位置上淡入/淡出 –
@tomharrison我会用CSS解决这个问题。可以在'.thing-enter'转换中设置一个延迟,或者为元素设置绝对定位,这样它们就可以相互绘制。 – ItsGreg
完美!我已经完全定位了,因为我无法按预期延迟工作,webpack.bin已经通过工作示例进行了更新 –