【发布时间】:2017-07-11 11:21:39
【问题描述】:
react-apollo 提供了将组件 props 转换为查询变量的能力:
<MyComponentWithData propsForQueryVariables={...} />
但我需要使用包装组件中的变量开始查询。
类似:
class MyComponent extends React.Component {
//...
onReady() {
// should be first request to server
this.props.refetch({
// variables here
})
}
onFilterChanged() {
this.props.refetch({
// new variables here
})
}
}
const MyComponentWithData = graphql(QUERY, {
options: {
waitUntilComponentStartQuery: true
// pollInterval:...
},
props({ data: { items, refetch } }) {
return {
items: items,
refetch: refetch
};
}
})(MyComponent);
更新
QUERY for MyComponent 看起来像
query getItems($filter: JSON!) {
items(filter: $filter) {
id
name
}
}
filter 不可为空。所以第一个请求应该有有效的变量filter,并且这个变量应该在包装组件中创建。
【问题讨论】:
-
使用 graphcool 我无法让过滤器工作,指出不能将对象作为子对象传递等。关于从那里去哪里的任何想法?
标签: reactjs react-apollo apollo-client