Reactjs Antd表排序忽略子级
我试图对包含子对象的表进行排序,但它忽略了子对象的“年龄”值所有项目(包括子项)应按升序或降序排序。不确定这是错误还是我的实现不正确 密码箱: 当前结果是忽略子项。这个想法太简单了,把树上的每一项都分类 js:Reactjs Antd表排序忽略子级,reactjs,sorting,antd,Reactjs,Sorting,Antd,我试图对包含子对象的表进行排序,但它忽略了子对象的“年龄”值所有项目(包括子项)应按升序或降序排序。不确定这是错误还是我的实现不正确 密码箱: 当前结果是忽略子项。这个想法太简单了,把树上的每一项都分类 js: const列=[ { 标题:“姓名”, 数据索引:“名称”, 键:“名称” }, { 标题:“年龄”, 数据索引:“年龄”, 关键:“年龄”, 宽度:“12%”, 分拣机:{ 比较:(a,b)=>a.age-b.age, 倍数:3 } }, { 标题:“地址”, 数据索引:“地址”,
const列=[
{
标题:“姓名”,
数据索引:“名称”,
键:“名称”
},
{
标题:“年龄”,
数据索引:“年龄”,
关键:“年龄”,
宽度:“12%”,
分拣机:{
比较:(a,b)=>a.age-b.age,
倍数:3
}
},
{
标题:“地址”,
数据索引:“地址”,
宽度:“30%”,
关键字:“地址”
}
];
常数数据=[
{
重点:1,,
姓名:“老约翰·布朗”,
年龄:60,,
地址:“纽约第一湖公园”,
儿童:[
{
关键词:11,
姓名:“约翰·布朗”,
年龄:42,,
地址:“纽约第二湖公园”
}
]
},
{
重点:二,,
姓名:“乔·布莱克”,
年龄:22,,
地址:“悉尼第一湖公园”,
儿童:[
{
关键词:10,
姓名:“约翰·布朗”,
年龄:12岁,
地址:“纽约第二湖公园”
}
]
}
];
功能更改(分页、过滤器、分拣机、额外){
控制台日志(“参数”,额外);
}
函数TreeData(){
返回(
);
}
不能将父元素和子元素放在同一棵树中,以便所有元素都按年龄排序
这将不再是一棵树,也毫无意义。你会失去父子关系
如果要按年龄对所有元素进行排序,则必须将项目移动到列表中并在其中进行排序
您只能在同一级别对项目进行排序,@edo9k的做法是正确的
对于每个树级别,树排序按年龄进行:
- 父母[22,61,62]
- 儿童1[12]
- 儿童2[10,30,40]
- 儿童3 [41,42]
- 父母[22,61,62]
- 儿童1[12]
- 儿童2[10,30,40]
- 儿童3 [41,42]
[22,61,62]
。按年龄分列的雅娜儿童=[12]
。Xavier的子女年龄=[10,30,40]
。华纳儿童的年龄=[41,42]
。是否要将所有子级一起排序?是的,树中的所有内容都应一起排序。排序正确。我在您的示例中添加了更多的子项,您可以在这里看到它的排序是正确的:但是这些子项在它们所属的类别中也是按年龄排序的。如果希望子项与父项在同一级别排序。。。您必须考虑一种不同的方式来表示哪一行是“子行”,哪一行是“父行”。是的,每个项目都应该按升序或降序排序。我发布了一个屏幕截图,显示了当前结果。它与子项不同步。表正在根据其类别对每个项进行排序。按年龄分列的父母=[22,61,62]
。按年龄分列的雅娜儿童=[12]
。Xavier的子女年龄=[10,30,40]
。华纳儿童的年龄=[41,42]
。是否要将所有子项排序在一起?是的,树中的所有项都应排序在一起
const columns = [
{
title: "Name",
dataIndex: "name",
key: "name"
},
{
title: "Age",
dataIndex: "age",
key: "age",
width: "12%",
sorter: {
compare: (a, b) => a.age - b.age,
multiple: 3
}
},
{
title: "Address",
dataIndex: "address",
width: "30%",
key: "address"
}
];
const data = [
{
key: 1,
name: "John Brown sr.",
age: 60,
address: "New York No. 1 Lake Park",
children: [
{
key: 11,
name: "John Brown",
age: 42,
address: "New York No. 2 Lake Park"
}
]
},
{
key: 2,
name: "Joe Black",
age: 22,
address: "Sidney No. 1 Lake Park",
children: [
{
key: 10,
name: "John Brown",
age: 12,
address: "New York No. 2 Lake Park"
}
]
}
];
function onChange(pagination, filters, sorter, extra) {
console.log("params", extra);
}
function TreeData() {
return (
<>
<Table
columns={columns}
dataSource={data}
onChange={onChange}
indentSize={0}
/>
</>
);
}