Я хотел бы обновить значения в ячейках таблицы ReactCSSTransitionGroup
и визуально визуализировать, когда значение изменяется в режиме реального времени, но с проблемами: строки таблицы, похоже, не обновляются, а несколько разделов имеют разницу в показаниях:ReactCSSTransitionGroup анимировать ячейки таблицы
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;
}
Спасибо Фариа - анимация еще не совсем рабочая - при обновлении значения, оно мерцает, вставив новый номер, и только затем скрывается старое значение. Кроме того, мне действительно нужно отдельно оцифровать вызовы таблицы (в разных цветах в зависимости от значений). –
Вы можете указать, следует ли отключать эффект ввода или выхода из перехода, чтобы произошел только один, это решит вашу проблему мерцания. Что касается другого вопроса о анимации ячеек таблицы отдельно, ваша TransitionGroup была дочерним элементом элемента tr, который также был введен в действие. В этом случае я думаю, что tr-строка удалялась до того, как TransitionGroup даже успел активироваться. В документах React отображаются только примеры TransitionGroup как родителя, управляющего его дочерними элементами, так что это может быть еще один вопрос для публикации. – FariaC