【发布时间】:2020-01-09 15:40:13
【问题描述】:
我正在尝试将 Query 组件中的数据转换为我可以呈现的内容。我有这个执行查询的函数,我的组件的渲染方法调用这个函数。我的问题是,如何将数据转化为我可以使用的东西?
查询函数:
protected queryFoos() {
const { match: { params } } = this.props;
const projectId = params.projectId;
const { query, dataKey } = fooGql.list;
return (
<Query query={query} variables={{ [RouteId.Project]: projectId }}>
{({ data, error, loading }: QueryResult) => {
if (loading) { return <div>Loading...</div>; }
if (error) { return <div>{error}</div>; }
const listFoos = plainToClassFromExist(new Foo(), data);
const variablesList = data.listFoos.items;
// this.setState({ foos: foosList}); // <= this doesn't work
return listFoos;
}}
</Query>
)
}
还有我调用查询函数的组件:
...
state = {
foos: [],
}
protected renderContent(project: Project) {
// query all foos related to the project
return (
{project &&
<Grid container alignItems="stretch">
<Grid item xs={12}<Typography>Foos</Typography></Grid>
<Grid item xs={12}>
{this.queryFoos()}
<EntityTable entities={this.state.foos}/>
</Grid>
</Grid>
</Grid>
}
);
}
【问题讨论】:
-
你试过
{console.log(this.queryFoos())}吗? -
我刚试过,它返回了一些 Symbol 对象。我的想法是在查询中设置本地设置状态。
-
你返回
data然后控制台记录呢? -
采用了不同的方法。使用 store.client.query 方法获取值,并从 componentDidMount 调用它。
标签: reactjs typescript graphql react-apollo