最近我得到了其他团队的项目,我的客户想要更改管理页面的某些部分.我想问一下如何为数据库中的数据设置特定的顺序.例如,在这种情况下,我的客户想要按特定的顺序设置Jabatan 例如,他们想把执行董事放在第一位,等等 对不起,我的英语不好

here the table i want to set the order

import { useState, useEffect } from 'react';
import { useNavigate } from 'react-router';
import { Space, Card, Table, Button, Typography, message } from 'antd';

import { EDIT_MANAJEMEN } from '@constants/urls';

import type { ManagementProps } from '@customTypes/aboutUs';

import fetchRequest from '@utils/fetcher';
import PreviewImage from '@components/PreviewImage';

const { Title } = Typography;

const Management = () => {
  const [managementData, setManagementData] = useState<ManagementProps[]>([]);
  const navigate = useNavigate();

  const managementColumns = [
    {
      title: 'No',
      dataIndex: 'key',
      key: 'key'
    },
    {
      title: 'Jabatan',
      dataIndex: 'otherData',
      render: (_: string, record: any) => <>{record.otherData.position}</>,
    },
    {
      title: 'Foto',
      dataIndex: 'url',
      render: (_: string, record: any) => (
        <PreviewImage
          key="key"
          buttonName="Lihat Foto"
          mediaUrl={record.url}
        ></PreviewImage>
      ),
    },
    {
      title: 'Nama',
      dataIndex: 'title',
    },
    {
      title: 'Narasi',
      dataIndex: 'content',
      render: (_: string, record: any) => <div dangerouslySetInnerHTML={{__html: record.content}}></div>,
    },
    {
      title: 'Aksi',
      key: 'action',
      render: (_: string, record: any) => (
        <Button
          type="link"
          className="button-link-grey"
          onClick={() => navigate(EDIT_MANAJEMEN + '/' + record.id)}
        >
          Ubah
        </Button>
      ),
      width: 150,
    },
  ];

  const getManagementData = async () => {
    try {
      await fetchRequest({
        method: 'GET',
        path: 'resource/about-us/management',
      }).then((response) => {
        if (!response.error) {
          setManagementData(response.management || {});
        } else {
          message.error(response.error.message);
        }
      });
    } catch (error: any) {
      message.error(error.message);
    }
  };

  useEffect(() => {
    getManagementData();
  }, []);

  return (
    <Space direction="vertical" size="middle" style={{ display: 'flex' }}>
      <Card title={<Title level={4}>Manajemen</Title>}>
        <Table
          columns={managementColumns}
          dataSource={managementData}
          pagination={false}
        />
      </Card>
    </Space>
  );
};

export default Management;

请告诉我如何实现这一目标

推荐答案

我认为有两种方法可以解决你的问题.

第一个解决方案

在显示之前,您必须对管理数据数组进行特定处理.

您还必须在此数组中放入另一个键,例如"ORDER",以确定数组的顺序.

您可以在数组上使用函数sort()来组织带有函数的array.

例如,我发现下面的示例按字符字符串对数组进行排序:

var tableauObjets = [
  {nom:'Mélanie', age: 29},
  {nom:'Henrique', age: 35},
  {nom:'Stan', age: 10},
  {nom:'Mac', age: 2}
];

tableauObjets.sort(function compare(a, b) {
  if (a.nom < b.nom)
     return -1;
  if (a.nom > b.nom )
     return 1;
  return 0;
});

console.log(tableauObjets);
/* Update the array to [{
  age: 35,
  nom: "Henrique"
}, {
  age: 2,
  nom: "Mac"
}, {
  age: 29,
  nom: "Mélanie"
}, {
  age: 10,
  nom: "Stan"
}] */

以下是一些文档和示例:

Function sort()

第二种解决方案:

您可以在表格组件上使用拖放,以便随时更改表格中行的顺序.

Drag & drop demo

Typescript相关问答推荐

从接口创建类型安全的嵌套 struct

如何在TypeScrip面向对象程序设计中用方法/属性有条件地扩展类

Redux—Toolkit查询仅在不为空的情况下添加参数

如何使函数接受类型脚本中具有正确类型的链接修饰符数组

在TypeScrip中分配回调时,参数的分配方向与回调本身相反.为什么会这样呢?

更新为Angular 17后的可选链运算符&?&问题

与字符串文字模板的结果类型匹配的打字脚本

被推断为原始类型的交集的扩充类型的交集

用于验证字符串变量的接口成员

使用数组作为类型中允许的键的列表

在类型脚本中创建泛型类型以动态追加属性后缀

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

为什么&Quot;元素隐式具有';Any';类型,因为...即使我已经打字了,也不能作为索引显示错误吗?

从类型脚本中元组的尾部获取第n个类型

如果判断空值,则基本类型Gaurd不起作用

TaskListProps[]类型不可分配给TaskListProps类型

埃斯林特警告危险使用&as";

我的类型谓词函数不能像我预期的那样工作.需要帮助了解原因

如何正确键入泛型相对记录值类型?

Typescript 确保通用对象不包含属性