【问题标题】:Pass array from GraphQL query to React-Table将数组从 GraphQL 查询传递到 React-Table
【发布时间】:2018-11-27 05:37:39
【问题描述】:

我正在尝试获取 GraphQL 查询的数组输出并使用 React-Table 呈现它,但我收到了 Cannot read property 'forEach' of undefined 错误。

我设法找到的唯一一个与我类似的问题没有帮助(How to show data from GraphQL server to npm react-table?)。当我将查询结果打印到控制台时,它在我看来就像一个普通数组,所以我不确定为什么 forEach 无法识别它。

组件代码:

import React from 'react';
import { Query } from 'react-apollo';
import gql from 'graphql-tag';

import ReactTable from 'react-table';
import "react-table/react-table.css";

const getTemplatesQuery = gql`
{
    getTemplates {
        id
        name
    }
}
`;

const columns = [
    {
        Header: "ID",
        accessor: "id"
    },
    {
        Header: "Name",
        accessor: "name"
    }
];

const Templates = () => (
    <Query 
        query = {getTemplatesQuery}>
        {({ loading, error, data }) => {
            if (loading) return <p>Loading...</p>;
            if (error) return <p>error</p>;

            // return data.getTemplates.map(({ id, name }) => (
            //     <p key={id} >{`${name}`}</p>
            // ));

            console.log(data);

            return (
                <div>
                    <ReactTable>
                        data = { data.getTemplates }
                        columns = { columns }
                        defaultPageSize = { 10 }
                    </ReactTable>
                </div>
            );
        }}
    </Query>
)

export default Templates;

应用代码:

...
class App extends Component {
    render() {
        return (
            <ApolloProvider client={client}>
            <div>
                <h2>My first Apollo app</h2>
                <Templates />
            </div>
        </ApolloProvider>
        );
    }
}

render(<App />, document.getElementById("root"));

【问题讨论】:

    标签: javascript reactjs graphql react-apollo react-table


    【解决方案1】:

    你的反应表语法错误,应该是这样的

    <ReactTable
      data={data.getTemplates}
      columns={columns}
      defaultPageSize={10}
    />
    

    【讨论】:

    • 我认为我已经检查了所有的错别字:(谢谢!
    • 乐于助人 :) 我强烈建议您使用带有 airbnb 配置的 linter (eslint)。它解决了很多这样的问题。
    猜你喜欢
    • 2017-08-28
    • 2018-02-27
    • 2019-04-13
    • 2020-01-25
    • 2017-09-27
    • 2023-01-26
    • 1970-01-01
    • 2018-01-27
    • 2019-01-26
    相关资源
    最近更新 更多