我是React的新手,我想知道最好的方法是做什么:
以下是我的组件:
var StartButton = React.createClass({
render: function() {
return (
<div>
<button>Start</button>
</div>
);
}
});
var Box1 = React.createClass({
render: function() {
return (
<div>
<div className="box1"></div>
</div>
);
}
});
var Box2 = React.createClass({
render: function() {
return (
<div>
<div className="box2"></div>
</div>
);
}
});
var App = React.createClass({
render: function() {
return (
<div>
<StartButton/>
<Box1/>
<Box2/>
</div>
);
}
});
ReactDOM.render(
<App />,
document.getElementById('react-app')
);
如果有人愿意帮助我,我会非常感激:) 感谢
答案 0 :(得分:0)
答案 1 :(得分:0)
CSS动画
定义transition-delay
的{{1}}等于Box2
的{{1}}。这样,当transition-duration
的转换完成后,Box1
将开始制作动画。
Box1
setTimeout + CSS动画
添加Box2
个事件,延迟时间等于.box1 {
/* other css */
transition: all 10ms ease-in 0s;
}
.box2 {
/* other css */
transition: all 10ms ease-in 10ms;
}
的{{1}}。在setTimeout
函数的回调中启动transition-duration
的动画。
例如:
Box1
承诺+ CSS动画
与上面的实现几乎相同,您将获得更清晰的代码。您需要解析Box2
n setTimeout
的回调函数。此外,您可以直接使用ES6 Promises。你不需要在React中包含jQuery。
Promises + requestAnimationFrame
如果您的动画非常复杂,可以在animate(box1Duration, box2Duration) {
animate('Box1', box1Duration);
setTimeout(function(){
animate('Box2', box2Duration);
}, box1Duration);
}
上使用RequestAnimationFrame返回Promise
。每当动画完成时,setTimeout
承诺对象。当返回的Box1
结算时,您可以使用相同的Promise
函数再次启动resolve
的动画。