Итак, я создаю табличный компонент в своем React Project, с помощью которого я отображаю список таких вещей, как Team
s, Game
s, Player
s и т. Д.
Я хочу получитьодин компонент для этой таблицы, и я могу использовать его столько раз, сколько я хочу, чтобы отображать различные виды данных.
Дело в том, что я использую Apollo & GraphQL для извлечения этих данных из моей БД, и каждый запрос имеет свое имя данных: например, если я получу все свои команды, у меня будет data.allTeams
, но если я получу все своиигры у меня будут data.allGames
:
class SectionTable extends React.Component<SectionTableProps, {}> {
constructor(props: SectionTableProps) {
super(props);
}
render() {
return (
<SectionTableQuery query={this.props.query} >
{({ data: { allTeams = [] } = {}, error, loading }) => {
if (loading) {
return <tbody><tr><td>LOADING</td></tr></tbody>
};
if (error !== undefined) {
return <tbody><tr><td>ERROR</td></tr></tbody>
};
return (
<tbody>
{allTeams.map((elem) => (
<tr key={elem.id}>
<th scope="row">{elem.id}</th>
{Object.keys(elem).map((k, i) => {
if (k !== "id" && k !== "__typename") {
return (<td key={elem[k]}>{elem[k]}</td>)
}
})}
</tr>
))}
</tbody>
);
}}
</SectionTableQuery>
)
}
}
В одном случае я захочу отобразить через allTeams
, но в другом случае я хочу сопоставить через allGames
.
Как я могу изменить свой код, чтобы он мог принимать имя данных в качестве аргумента?