reactjs - React Table 无法正确排序数字

标签 reactjs react-table

React-table 像这样对小数进行排序:

enter image description here

我的猜测是,虽然我从服务器接收数字,但 react 表将它们作为文本处理。所以,我像这样修改了访问器:

accessor: d => Number(d.Invoice_Weight).toFixed(2)

但我总是排序错误。

这是列的代码:

 {
                      Header: () => 
                      <DropDownMenu 
                      header={content[lang].Invoice_Weight}
                      openModal = {this.onOpenSelectColumnsModal}
                      />,
                      id: 'Invoice_Weight',
                      sortable: true,
                      accessor: d => Number(d.Invoice_Weight).toFixed(2),
                      //width: 200,
                      getProps: () => {
                        return {
                          style: {
                            textAlign: 'right'
                          }
                        }
                      },
                      show: Invoice_Weight,
                    },

最佳答案

正如其他答案中所建议的,问题是 toFixed 返回一个字符串,因此将使用字符串比较来完成排序。但是,在这种情况下,强制返回数字将不起作用,因为您将丢失尾随 0 ,我猜您仍然需要它。

另一种解决方案是使用自定义排序:

accessor: d => Number(d.Invoice_Weight).toFixed(2),
sortMethod: (a, b) => Number(a)-Number(b)

您可能想要改进 sortMethod 来处理 NaN 和无穷大(如果有的话),但这就是一般想法

您可以使用它将字符串强制返回数字,但仅限在排序的情况下,而不影响显示的值

关于reactjs - React Table 无法正确排序数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56705115/

相关文章:

reactjs - 在表格单元格内使用tippyjs-react

reactjs - React-table - 为一列禁用全局过滤器,但为禁用的列添加另一个过滤器

javascript - 在单个 prop React.js 中传递多个方法

javascript - Reactjs 错误 : Uncaught (in promise) Error: Request failed with status code 401

reactjs - 如何在使用 nextjs 框架制作并托管在 heroku 上的 express react 应用程序中最有效地执行 gzip

reactjs - 为什么我应该在react-table中使用cell.render ("Cell")而不是cell.value?

javascript - 添加表行时 react 'this'未定义

reactjs - 为什么react-table会出现错误 "react is undefined"

css - React Router NavLink 和 activeClassName 的问题

javascript - 是否可以在新的 React 网站的 iframe 中嵌入旧的 JS 应用程序