本文介绍了如何使ReactJS中的表可排序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在ReactJS中构建了一个简单的应用程序,该应用程序通过调用某个API来与JSON数组一起使用.然后,我在表中填充数组的结果.我现在想使表中的列可排序.有人可以帮我吗.这是我的代码.
I am building a simple app in ReactJS that works with a JSON array by calling a certain API. I am then populating the results of the array in a table. I now wanted to make the columns of the table sortable. Can someone help me with that. Here is my code.
class ParentComponent extends Component {
constructor(props) {
super(props);
this.state = { data: [] };
}
componentDidMount() {
fetch("http://hostname:xxxx/yyyy/zzzz")
.then(function(response) {
return response.json();
})
.then(items => this.setState({ data: items }));
}
render() {
var newdata = this.state.data;
return (
<table className="m-table">
<thead>
<tr>
<th>AccountName</th>
<th>ContractValue</th>
</tr>
</thead>
<tbody>
{newdata.map(function(account, index) {
return (
<tr key={index} data-item={account}>
<td data-title="Account">{account.accountname}</td>
<td data-title="Value">{account.negotiatedcontractvalue}</td>
</tr>
);
})}
</tbody>
</table>
);
}
}
export default ParentComponent;
推荐答案
根据我的评论,这是一个简单的示例:
Here's a quick example of how to do it, based on my comment:
class ParentComponent extends Component {
constructor(props) {
super(props);
this.state = { data: [] };
this.onSort = this.onSort.bind(this)
}
componentDidMount() {
fetch("http://hostname:xxxx/yyyy/zzzz")
.then(function(response) {
return response.json();
})
.then(items => this.setState({ data: items }));
}
onSort(event, sortKey){
/*
assuming your data is something like
[
{accountname:'foo', negotiatedcontractvalue:'bar'},
{accountname:'monkey', negotiatedcontractvalue:'spank'},
{accountname:'chicken', negotiatedcontractvalue:'dance'},
]
*/
const data = this.state.data;
data.sort((a,b) => a[sortKey].localeCompare(b[sortKey]))
this.setState({data})
}
render() {
var newdata = this.state.data;
return (
<table className="m-table">
<thead>
<tr>
<th onClick={e => this.onSort(e, 'accountname')}>AccountName</th>
<th onClick={e => this.onSort(e, 'negotiatedcontractvalue')}>ContractValue</th>
</tr>
</thead>
<tbody>
{newdata.map(function(account, index) {
return (
<tr key={index} data-item={account}>
<td data-title="Account">{account.accountname}</td>
<td data-title="Value">{account.negotiatedcontractvalue}</td>
</tr>
);
})}
</tbody>
</table>
);
}
}
export default ParentComponent;
这篇关于如何使ReactJS中的表可排序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!