css - ReactCSSTransitionGroup 为表格单元格添加动画

标签 css reactjs css-animations

我想更新表格单元格中的值ReactCSSTransitionGroup,并在值实时更改时以可视方式显示动画,但遇到问题:表格行似乎没有更新,而多个 div 已更新显示差异:

http://jsfiddle.net/jj0byzz0/33/

这是示例:

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;

var AniTest = React.createClass({
render: function () {
    var content = this.state.numbers.map(function(number){
        return (
           <tr key={number}>      
           <td>
           <ReactCSSTransitionGroup component="div" transitionName="aninumber"  >            
               <div key={number}>{number}</div>
           </ReactCSSTransitionGroup>
           </td>
           </tr>
        )
    });

    return (
          <div>  
             <ReactCSSTransitionGroup  transitionName="aninumber"  >            
                <div key={this.state.numbers[0]}> {this.state.numbers[0]} </div>
                <div key={this.state.numbers[1]}> {this.state.numbers[1]} </div>
              </ReactCSSTransitionGroup>
              <br/>
              Table Animation

              <table >
                  <thead>
                      <tr>
                        <th>#</th>
                      </tr>
                  </thead>
                  <tbody>
                      {content}
                  </tbody>
              </table>
          </div>
    )
},

componentDidMount: function(){
    setInterval(this.updateNumbers, 5000); 

},

updateNumbers: function() {

    this.setState({numbers:[Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000)]});

},

getInitialState: function(props){
    return {
        numbers:[1,2]
    };

}
});

React.render(<AniTest/>, document.getElementById("anitest"));

和CSS:

.aninumber-enter {
  background-color: green;
  transition: background-color .5s ease;
}

.aninumber-enter.aninumber-enter-active {
  background-color: transparent;
}

.aninumber-leave {
  background-color: transparent;
  transition: background-color .5s ease;
}

.aninumber-leave.aninumber-leave-active {
   background-color: green;
}

最佳答案

不要在内容变量中插入多个 CSSTransitionGroup 标记。相反,删除显式 tbody 标记,并替换为:

<ReactCSSTransitionGroup component="tbody" transitionName="aninumber">
{content}
</ReactCSSTransitionGroup>

这个单个 TransitionGroup 呈现为 tbody 元素并控制内部 tr 子元素的动画。

使用 React v0.13 工作 fiddle :http://jsfiddle.net/faria/tefxbjtL/

关于css - ReactCSSTransitionGroup 为表格单元格添加动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409396/

相关文章:

css - 自动调整 SVG 大小?

html - 使用 abbr 元素通过 CSS 进行响应式文本更改

css - 覆盖一个小部件的正确程序 - 相对和绝对?

javascript - 如何在React中访问无状态功能组件中的props.children?

css - 动画范围从 0px 到 ...%?

html - 无法使用CSS动画垂直翻转导航栏菜单文本

html - 即使悬停状态消失也保持过渡

javascript - 根据 child <a> href 添加 active 类

reactjs - React-query 和 Typescript - 如何正确输入突变结果?

css - 阅读 CSS、ES6、React 中的更多功能