Bir dizi tablo satırı bileşeni oluşturan CamperList adlı bir React bileşenim var. Tablo başlık etiketlerinin ikisinde, this.state.toggle arasında geçiş yapması ve tabloyu güncellemesi gereken onClick olayları var. Tüm Zaman Noktaları etiketini tıklattığımda, tablo güncellemeleri yapılır, ancak son 30 gün içindeki Puanları tıklattığımda bu etiket güncellenmez. kalemeTepki bileşeni onClick olayından sonra yeniden oluşturulmuyorClick olay
var CamperList = React.createClass({
getInitialState: function() {
return {
recent: [],
toggle: true
};
},
componentDidMount: function() {
$.get('http://fcctop100.herokuapp.com/api/fccusers/top/recent', function(data) {
this.setState({
recent: data
});
}.bind(this));
},
recent: function() {
this.setState({toggle: true});
},
alltime: function() {
this.setState({toggle: false});
},
render: function() {
var camperNodes;
if (this.state.toggle) {
camperNodes = this.state.recent.map(function(camper, index) {
return (
<Camper index={index + 1} username={camper.username} recent={camper.recent} alltime={camper.alltime} />
);
});
} else {
var alltime = this.state.recent;
alltime = alltime.sort(function(a,b) {
return b.alltime - a.alltime;
})
camperNodes = alltime.map(function(camper, index) {
return (
<Camper index={index + 1} username={camper.username} recent={camper.recent} alltime={camper.alltime} />
);
});
}
return (
<table className="table">
<thead className="blue">
<tr>
<th>#</th>
<th>Camper Name</th>
<th onClick={this.recent}>Points in past 30 days</th>
<th onClick={this.alltime}>All time points</th>
</tr>
</thead>
<tbody>
{camperNodes}
</tbody>
</table>
);
}
});
Bağlantı: İşte kod http://codepen.io/ZacharyKearns/pen/dMvGNG/
Ne olmasını bekliyorsunuz? Tıklama olay işleyicisinin çok iyi çalıştığından eminim, ancak işlem mantığınız yanlış (bir şekilde). Ne elde etmeye çalıştığınızı bize söylemezseniz, maalesef size gerçekten yardımcı olamayız. Ben * varsa, verilerin farklı şekilde sıralanmasını istiyorsun, ama nasıl olduğunu açıklamıyorsun. Şimdiye kadar, her zaman verileri sadece "alltime" ile sıralıyorsunuz. –
Özür dileriz, 'this.recent' tetikler ve' toggle 'öğesini true olarak ayarlarsa, bileşenin son noktalara göre sıralanmış listeyle yeniden oluşturulmasını istiyorum. – Zach
Ama asla son noktalara göre sıralama yapmıyorsunuz. –