Как я могу добавить столбец данных в таблицу materialui в reactjs

#reactjs #material-ui

#reactjs #материал-пользовательский интерфейс

Вопрос:

Как я могу добавить столбец данных в таблицу materialui в reactjs. Например, у меня есть 100 филиалов для моего бизнеса, я хочу, чтобы заголовок таблицы содержал название филиала, и этот столбец должен содержать имена сотрудников. Таким образом, должно быть 100 заголовков таблицы. Array=[{branchname: ‘String’, employees[]}]

Ответ №1:

Чао, хорошо, вам нужно немного поработать со своей структурой данных, потому что Materual UI Table принимает данные, организованные по строкам, а не по столбцам, как вам нужно.

Допустим, у вас есть такие данные, как:

 const branchEmployees = [
  { branchname: "branch1", employees: ["e1", "e2", "e3"] },
  { branchname: "branch2", employees: ["e4", "e5", "e6"] },
  { branchname: "branch3", employees: ["e7", "e8", "e9"] },
  { branchname: "branch4", employees: ["e10", "e11", "e12"] },
  { branchname: "branch5", employees: ["e13", "e14", "e15"] }
];
  

Итак, сначала создайте массив со всеми именами ветвей. Что-то вроде:

 let bEmp = [];
branchEmployees.forEach((el) => {
   bEmp.push(el.branchname);
});
  

Затем мы должны вернуть данные сотрудников таким образом:

От:

    employees: ["e1", "e2", "e3"]
   employees: ["e4", "e5", "e6"]
   employees: ["e7", "e8", "e9"]
   employees: ["e10", "e11", "e12"]
   employees: ["e13", "e14", "e15"]
  

Для:

    employees: ["e1", "e4", "e7", "e10", "e13"]
   employees: ["e2", "e5", "e8", "e11", "e14"]
   employees: ["e3", "e6", "e9", "e12", "e15"]
  

Чтобы достичь этого, вы могли бы определить const, который представляет максимальное количество сотрудников в филиале, а затем создать вложенный for loop , чтобы выполнить вышеуказанное преобразование. Что-то вроде:

 const NUMBER_OF_EMPLOYEES_PER_BRANCH = 3; // this is the max number of employees per branch
let arrLp = [];
for (let j = 0; j < NUMBER_OF_EMPLOYEES_PER_BRANCH; j  ) {
   let arrayLookup = [];
   for (let i = 0; i < branchEmployees.length; i  ) {
      arrayLookup.push(branchEmployees[i].employees[j]);
   }
   arrLp.push(arrayLookup);
}
  

Итак, теперь у вас есть, bEmp который содержит все названия филиалов и arrLp который содержит всех сотрудников в строке.

Теперь просто необходимо создать 2 переменные состояния, чтобы сохранить эти значения и использовать их в Table компоненте.

Вот пример codesandbox.

Примечание: это решение работает также, если у вас разное количество сотрудников в филиале. Просто необходимо установить NUMBER_OF_EMPLOYEES_PER_BRANCH максимальное количество сотрудников, которое может иметь филиал 🙂