【发布时间】:2015-05-14 02:25:14
【问题描述】:
我很难让动画在 React 中工作。也许我从根本上缺少一些东西。
我在 coffeescript 中做这个——希望你不要介意。
我创建了一个非常简单的用户界面。里面有一个带有标题的div。当您单击标题时,标题会更改,我想使用 VelocityJS 为淡入/淡出动画制作动画。
ReactTransitionGroup = React.createFactory(React.addons.CSSTransitionGroup)
{div} = React.DOM
TitleClass = React.createClass
displayName: "Title"
render: ->
(div {onClick:@props.changeTitle}, @props.title)
componentWillEnter: (done) ->
node = @getDOMNode()
console.log "willEnter"
Velocity(node, 'transition.fadeIn', {complete: done})
componentWillLeave: (done) ->
node = @getDOMNode()
console.log "willLeave"
Velocity(node, 'transition.fadeOut', {complete: done})
Title = React.createFactory(TitleClass)
MainClass = React.createClass
displayName: "Main"
getInitialState: ->
title: 'Main'
changeTitle: ->
if @state.title is 'Home'
@setState {title: 'Main'}
else
@setState {title: 'Home'}
render: ->
(div {style:{width: '100%', fontSize:'25px', textAlign:'center', marginTop:'20px'}},
(ReactTransitionGroup {transitionName: 'fade'},
(Title {changeTitle:@changeTitle, title:@state.title})
)
)
Main = React.createFactory(MainClass)
React.render(Main({}), document.body)
就是这样。很不言自明。这个ReactTransitionGroup 对我来说仍然是个谜。我的理解是,它的任何孩子都应该接到componentWillEnter 和componentWillLeave 的电话,但这最终不会发生。 According to the docs 似乎我应该看到 console.log "willEnter" 但我没有。
我已经为此挂断了几个小时。有什么想法吗?
【问题讨论】:
标签: coffeescript reactjs