6

是否可以在 a 中指定项目的顺序ReactCSSTransitionGroup

考虑其顺序很重要的项目列表。如果您想通过一个操作显示一个项目并隐藏其相邻项目,则会ReactCSSTransitionGroup混淆它们的顺序。看看下面的小提琴,这些项目应该是[1, 2, 3, 4, 5].

http://jsfiddle.net/mehranziadloo/kb3gN/15519/

是否可以告诉ReactCSSTransitionGroup(或ReactTransitionGroup)项目的顺序?

4

1 回答 1

4

ReactCSSTransitionGroup 只是动画 DOM 中的变化,它不关心顺序。您的状态从奇数变为偶数,它不会包含所有数字的排序数组。您可以通过以不同方式修改状态、临时保存旧项目以用于动画目的来解决它,例如:

switch: function() {
  var newItems;
  if (this.state.items[0] % 2 !== 1) {
    newItems = [1, 3, 5];
  }
  else {
    newItems = [2, 4];
  }
  this.setState({
    items: newItems,
    previousItems: this.state.items
  }, function() {
    this.setState({
      previousItems: []
    })
  });
}

之后,您需要修改您的渲染方法:

render: function() {
  var currentItems = this.state.items.concat(this.state.previousItems).sort();
  var items = currentItems.map(function(item, i) {
    return (
      <div key={item}>
        {item}
      </div>
    );
  }.bind(this));
  return (
    <div>
      <button onClick={this.switch}>Switch</button>
      <ReactCSSTransitionGroup transitionName="example" transitionEnterTimeout={1000} transitionLeaveTimeout={1000}>
        {items}
      </ReactCSSTransitionGroup>
    </div>
  );
}

这是一个更新的小提琴:http: //jsfiddle.net/ny5La5ky/

于 2016-07-07T12:50:34.887 回答