【发布时间】:2021-10-10 19:41:53
【问题描述】:
我正在尝试处理在 dsc 和 asc 之间切换的排序函数。 它还需要处理称为“标题”的某个表列名称。 预期结果是对“天”或“站”进行排序,并分别在 dsc 和 asc 之间切换。
handleClick={(val: any, header: string) =>
val((val: any) => {
const result = [...val].sort((a: any, b: any) => {
return sortOrder === 'asc'
? header === 'Station'
? b.station - a.station
: b.days - a.days
: header === 'Station'
? a.station - b.station
: a.days - b.days;
});
setSortOrder(sortOrder === 'asc' ? 'dsc' : 'asc');
return result;
})
}
这是我当前正确过滤的功能站,但“自上次事件以来的天数”似乎不起作用。
这是handleClick子函数
onClick={() => props.handleClick(setFilteredData, header)}
这是数据样本
[
{
days: 23,
station: "Braidwood",
},
{
days: 18,
station: "Byron",
},
{
days: 28,
station: "Byron",
},
{
days: 32,
station: "Calvert Cliffs",
},
{
days: 20,
station: "Dresden",
},
{
days: 320,
station: "Dresden",
},
];
【问题讨论】:
-
你能解释一下你想要发生什么吗?我猜你希望它按一个属性或另一个,或第一个,然后另一个...但不是很清楚。
-
问题从您更改 sortOrder 状态开始,但是,您应该知道 setState 有一些“超时”并且它不会立即更新。 developpaper.com/on-the-data-delay-in-this-setstate
-
@MattMorgan 它按一个属性或另一个属性排序是正确的
-
@yairmea 是的,我认为你是对的,我认为需要为该州的哪个属性存储哪个 asc 顺序
标签: javascript reactjs function sorting methods