0
我有一個反應組件,它使用ReactCSSTransitionGroup進行CSS轉換,並且我的服務器已啓動並運行了一個虛擬數據庫和一個API調用,該調用返回一個對象數組,然後測試的目的,我使用的setTimeout來查詢我的API網址:在React.js中動畫新添加元素
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var ItemsList = React.createClass({
getInitialState: function() {
return {
items: [],
api: {
getItems: '/api/items'
}
}
},
componentDidMount: function() {
this.fetchData();
},
fetchData: function() {
$.get(this.state.api.getItems, function(data) {
this.setState({
items: data
});
setTimeout(this.fetchData, 3000);
}.bind(this));
},
render: function() {
var items = this.state.items.map(function(item, index) {
return (
<div className="title" key={index}>
{item.title}
</div>
);
}.bind(this));
return (
<div className="content">
<ReactCSSTransitionGroup transitionName="example">
{items}
</ReactCSSTransitionGroup>
</div>
);
}
});
React.render(
<ItemsList />,
document.querySelector('.react')
);
而這裏的CSS:
.example-enter {
opacity: 0.01;
}
.example-enter.example-enter-active {
opacity: 1;
transition: opacity 2.5s ease-in;
}
.example-leave {
opacity: 1;
}
.example-leave.example-leave-active {
opacity: 0.01;
transition: opacity 2.5s ease-in;
}
我想實現的是,每一次的項目被添加到陣列中,我想讓它動起來,但有一個條件 - 新的物品必須出現在t該列表的操作。
所以我在PHP中做了orderBy created_at DESC
,它成功返回了所有的對象(按我想要的順序),但是React.js在最上面呈現新對象,然後爲最後一個元素動畫(即使它添加了一個新的一個在頂部)。
我在做什麼錯? :(
確保你的item.id是唯一的,但我確定它是;) –