javascript - 无法对 Gatsby 网站的 Ant Design Table 中的列进行排序
问题描述
我在 Gatsby 站点中实现了 Ant Design Table。我正在从 graphql 中提取数据。到目前为止,一切都很好。数据显示正确,分页工作等。
现在我想添加对列进行排序的功能。为此,我将表和列设置如下:
<Table
dataSource={data.allNewsFeed.edges}
onChange={onChange}
rowSelection={rowSelection}
rowKey="id"
>
<Column
title="Title"
dataIndex="node.title"
key="title"
sorter={(a, b) => a.node.title - b.node.title}
sortDirections={["descend", "ascend"]}
/>
</Table>
现在,确实显示了用于对列进行排序的图标,但是当我单击它时没有任何反应。
.node
如果我从排序功能 中删除,也会发生同样的事情: sorter={(a, b) => a.title - b.title}
.
所以,我被卡住了——知道为什么这不起作用以及如何解决吗?
谢谢。
解决方案
我想你可以使用而不是a.node.title - b.node.title
正确String.prototype.localeCompare
排序。正如文档所述:
localeCompare() 方法返回一个数字,指示引用字符串是在排序顺序之前还是之后还是与给定字符串相同。
不知何故:
const values = ['random', 'something', 'else', 'text'];
const result = values.sort((a,b) => {
return a.localeCompare(b);
});
console.log(result);
所以我想在提到的情况下它会是:
<Column title="Title"
dataIndex="node.title"
key="title"
sorter={(a, b) => a.node.title.localeCompare(b.node.title)}
sortDirections={["descend", "ascend"]} />
我希望这有帮助!
推荐阅读
- java - 为什么用 .bat 编写的命令在 java 中无限运行?
- python - 根据元组列表中的索引值从数据框中提取值
- node.js - 如何部署 nodejs 和 express 到 AWS EC2 实例
- javascript - 从用户那里获取 2 个号码并显示这两个号码之间的范围
- r - 为什么在我的工作笔记本电脑上安装软件包时出现“无法锁定目录”错误
- javascript - 如何获取正确的客户端 IP 地址。使用Javascript RTCPeerConnection时客户端IP地址作为一些随机值出现?
- robotframework - RobotFrameWork:点击链接的标题
- apache-spark - 在需要构建 DataFrame 的 DataFrame 的每一行上调用函数
- react-native - 从导入的 UI 导航栏组件调用 onPress 方法
- android - Ionic 应用程序在打开时连续显示白屏