我試圖讓組件進入和離開時,該按鈕被點擊狀態之間切換之間的過渡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已經通過工作示例進行了更新 –