Я начал работать с GraphQL server
и Apollo client
. Код написан на Reactjs
. Теперь я хочу получать данные с сервера GraphQL с помощью любых запросов и отображать данные в таблице в пользовательском интерфейсе. Я использую npm react-table
для таблицы.
Я могу легко получить и показать данные, если в ответе на запрос нет массива. Например, у меня есть строка ввода запроса ниже:
{
account {
firstName
lastName
id
}
}
И результат запроса без массива
{
"data": {
"account": {
"firstName": "Marlen",
"lastName": "Marquardt",
"id": 2
}
}
}
В компоненте ReactTable я просто извлекаю данные, используя data.account.firstName
<ReactTable
data={[
{
firstName: data.account.firstName,
lastName: data.account.lastName,
id: data.account.id,
}
]}
columns={columns}
/>
Однако, если результат запроса имеет массив, я не знаю, как получить данные. Пожалуйста, взгляните на картинку результат запроса с массивом
Итак, как я могу показать все 5 игрушек title
в таблице? Это мой старый код:
import React from 'react';
import s from './Test.css';
import { ApolloClient } from 'apollo-client';
import { HttpLink } from 'apollo-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';
import fetch from 'node-fetch';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';
import ReactTable from 'react-table'
import 'react-table/react-table.css';
const localURL = 'http://localhost:3000/graphql';
const client = new ApolloClient({
link: new HttpLink({ uri: localURL, fetch }),
cache: new InMemoryCache()
});
const columns = [
{
Header: "ID",
accessor: "id"
},
{
Header: "First Name",
accessor: "firstName"
},
{
Header: "Last Name",
accessor: "lastName"
}
]
class Table extends React.Component {
render() {
let { data } = this.props;
return (
<div>
<h2> ADMIN </h2>
<ReactTable
data={[
{
firstName: data.account.firstName,
lastName: data.account.lastName,
id: data.account.id,
}
]}
columns={columns}
defaultPageSize={10}
/>
</div>
);
}
}
const queryAccountList = gql`
query {
account{
firstName
lastName
id
}
}
}
`
const AccountListWithData = graphql(queryAccountList)(Table);
export default AccountListWithData;