【发布时间】:2018-05-21 19:21:00
【问题描述】:
我正在尝试使用 gsap 为进入和退出的列表设置动画,因此我使用 <TransitionGroup> 包装了我的列表。我想使用 componentWillEnter 和 componentWillLeave 来触发我的动画,但它们没有被调用。我已经检查了所有内容 1000 倍,但无法弄清楚...我应该使用 <Transition> 来代替这种动画吗?
import React from "react";
import { TransitionGroup } from "react-transition-group";
import animations from './animations';
class Events extends React.Component {
componentWillEnter(cb) {
console.log('entered');
const items = document.getElementsByClassName("items");
animations.animateIn(items, cb);
}
componentWillLeave(cb) {
console.log('exited');
const items = document.getElementsByClassName("items");
animations.animateOut(items, cb);
}
render() {
const event = this.props.event;
return (
<li key={event._id} className="items">
<h1>{event.title}</h1>
</li>
);
}
}
class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
events: []
};
}
componentDidMount() {
return fetch("https://pickup-btown.herokuapp.com/api/event/biking",
{
method: "GET",
headers: {
"Content-Type": "application/json"
},
mode: "cors"
})
.then(response => {
return response.json();
})
.then(events => {
this.setState({ events: events.docs });
})
.catch(err => console.log(err));
}
unLoad(e) {
e.preventDefault();
this.setState({ events: [] });
}
render() {
const events = this.state.events;
return (
<section>
<button onClick={this.unLoad.bind(this)}>back</button>
<TransitionGroup component="ul">
{events.length ? (
events.map(event => {
return <Events event={event} key={event._id} />;
})
) : (
<div />
)}
</TransitionGroup>
</section>
);
}
}
export default Main;
任何帮助将不胜感激!
【问题讨论】:
-
您在
Events组件中调用componentWillEnter和componentWillLeave的位置?
标签: reactjs gsap react-transition-group