在React中,如何立即触发动画而不是让它们排队?

tb1*_*b11 9 javascript animation reactjs

尝试小提琴:http://jsfiddle.net/zhjk39qe/2/ - 单击按钮使框淡入/淡出.

当我点击按钮两次快速连续,我期望框开始第二淡出的一瞬间,但马上消失回来,而是在这个小提琴,该箱具有淡出了所有的方法,然后将淡出一路在.(第二次点击排队等候,感觉不太快.用户体验不佳.)

有没有办法立即强制进行第二次转换?

(一直在这里挖掘,但不知道去哪里:https://github.com/facebook/react/tree/master/src/addons/transitions)

JS在这里:

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var Hello = React.createClass({
    getInitialState: function() {
      return {on: true};
    },
    onClick: function() {
      this.setState({on: !this.state.on});
    },
    render: function() {
        var k = this.state.on ? (<div> Hello {this.props.name} </div>) : "";
        return <div>
            <a href="#" onClick={this.onClick}> Click to toggle </a> <br/> <br/>
            <ReactCSSTransitionGroup transitionName="example">
              {k}
            </ReactCSSTransitionGroup>
          </div>;
    }
});

React.render(<Hello name="World" />, document.getElementById('container'));
Run Code Online (Sandbox Code Playgroud)

jov*_*l22 6

我同意@Morhaus我会根据需要切换css类.

这是一个有效的例子.我知道这与您原来的问题有所不同,但在这种情况下并不真正需要ReactCSSTransitionGroup.

http://jsfiddle.net/joverall22/t7wok2zy/

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var Hello = React.createClass({
    getInitialState: function() {
      return {on: true};
    },
    onClick: function() {
      this.setState({on: !this.state.on});
    },
    render: function() {
    var variant;
    if(this.state.on){
     variant = 'transition on';
    } else {
     variant = 'transition off';
    }
        var k = <div className={variant}> Hello {this.props.name} </div>
        return <div>
            <a href="#" onClick={this.onClick}> Click to toggle </a>
            <br/> <br/>
              <span>{k}</span>
          </div>;
    }
});

React.render(<Hello name="World" />, document.getElementById('container'));
Run Code Online (Sandbox Code Playgroud)