DE
React - wie erstellt man eine dynamische Tabelle
3 points
In diesem Beitrag wird gezeigt, wie man eine dynamische Tabelle in React erstellen kann.
Das folgende Beispiel besteht aus mehreren Schritten:
- Das Erstellen einer dynamischen Tabelle aus Basis eines Arrays,
- Jede Tabelle besteht aus einer Kopfzeile und Datenansätzen,
- Die Kopfzeile ist meist fest und hat immer die gleiche Anzahl von Spalten,
- Beim Erstellen von Datenansätze soll man die Funktion
map()
verwenden. Das ist ein guter Lösungsweg, um Array-Elemente in React-Elemente zu konvertieren.
Hinweis:
Man kann nicht vergessen, dass jedes Element einen eigenen Schlüssel haben soll, weil es hilfreich in React ist, Änderungen am DOM-Baum optimal zu verwalten. So ein Schlüssel kann z.B.
id
sein, die jedem Element des Arrays zugeordnet ist.
Lauffähiges Beispiel:
xxxxxxxxxx
1
// Hinweis: Bei der Arbeit mit dem JSX-Compiler soll man die Importzeilen entkommentieren.
2
// import React from 'react';
3
// import ReactDOM from 'react-dom';
4
5
const tableStyle = {
6
border: '1px solid black',
7
borderCollapse: 'collapse'
8
}
9
10
const tdStyle = {
11
border: '1px solid black',
12
};
13
14
const App = () => {
15
const students = [
16
{ id: 1, name: 'Thomas', age: 22 },
17
{ id: 2, name: 'Adam', age: 43 },
18
{ id: 3, name: 'Markus', age: 16 },
19
{ id: 4, name: 'Jack', age: 29 }
20
];
21
return (
22
<div>
23
<table style={tableStyle}>
24
<tbody>
25
<tr>
26
<th style={tdStyle}>Id</th>
27
<th style={tdStyle}>Vorname</th>
28
<th style={tdStyle}>Alter</th>
29
</tr>
30
{students.map(({ id, name, age }) => (
31
<tr key={id}>
32
<td style={tdStyle}>{id}</td>
33
<td style={tdStyle}>{name}</td>
34
<td style={tdStyle}>{age}</td>
35
</tr>
36
))}
37
</tbody>
38
</table>
39
</div>
40
);
41
};
42
43
const root = document.querySelector('#root');
44
ReactDOM.render(<App />, root );
In diesem Abschnitt wird gezeigt, wiem man eine Komponente erstellen kann, die Daten anzeigt, die sich beim Anklicken ändern.
xxxxxxxxxx
1
// Uwaga: Bei der Arbeit mit dem JSX-Compiler soll man die Importzeilen entkommentieren.
2
// import React from 'react';
3
// import ReactDOM from 'react-dom';
4
5
const tableStyle = {
6
border: '1px solid black',
7
borderCollapse: 'collapse'
8
}
9
10
const tdStyle = {
11
border: '1px solid black',
12
};
13
14
const Table = ({students}) => (
15
<div>
16
<table style={tableStyle}>
17
<tbody>
18
<tr>
19
<th style={tdStyle}>Id</th>
20
<th style={tdStyle}>Vorname</th>
21
<th style={tdStyle}>Alter</th>
22
</tr>
23
{students.map(({ id, name, age }) => (
24
<tr key={id}>
25
<td style={tdStyle}>{id}</td>
26
<td style={tdStyle}>{name}</td>
27
<td style={tdStyle}>{age}</td>
28
</tr>
29
))}
30
</tbody>
31
</table>
32
</div>
33
);
34
35
const GROUP_1 = [
36
{ id: 1, name: 'Thomas', age: 22 },
37
{ id: 2, name: 'Adam', age: 43 },
38
{ id: 3, name: 'Markus', age: 16 },
39
{ id: 4, name: 'Jack', age: 29 }
40
];
41
42
const GROUP_2 = [
43
{ id: 1, name: 'Katrin', age: 23 },
44
{ id: 2, name: 'Anne', age: 18 }
45
];
46
47
const App = () => {
48
const [students, setStudents] = React.useState(GROUP_1);
49
return (
50
<div>
51
<div>
52
<button onClick={() => setStudents(GROUP_1)}>GRUPPE_1 anzeigen</button>
53
<button onClick={() => setStudents(GROUP_2)}>GRUPPE_2 anzeigen</button>
54
</div>
55
<br />
56
<Table students={students} />
57
</div >
58
);
59
};
60
61
const root = document.querySelector('#root');
62
ReactDOM.render(<App />, root );