Paginating组件不需要初始查询

时间:2017-03-01 16:00:50

标签: graphql react-apollo

我希望组件从其父组件接收其初始数据,同时仍然能够自己对数据进行分页。

例如,考虑

<Parent> //Makes initial GraphQL call
  <StaticChild/> //Uses initial data and never needs to rerender
  <DynamicChild/> //Paginates the same query that the Parent made, will need to rerender for every new "page"
</Parent>

<DynamicChild>会是什么样的?我的理解是,为了能够访问fetchMore(用于分页),你必须在<DynamicChild>函数中包含graphql(来自react-apollo)。但是graphql函数需要初始查询,<DynamicChild>不需要进行查询。我的选择似乎是:

a)让<Parent>处理分页。这意味着我必须将一个shouldComponentUpdate方法添加到<StaticChild>

b)让<DynamicChild>进行与<Parent>类似的初始查询,并依靠Apollo从Redux商店中提取第二个查询(假设两个查询不会被批处理)。

c)让<Parent>进行初始查询并将fetchMore()回调传递给<DynamicChild>。我担心当<DynamicChild>使用回调时,它仍会尝试重新呈现<Parent>

虽然这些解决方案很简单,但有没有办法让<DynamicChild>定义自己的分页查询而不定义自己的初始查询?

1 个答案:

答案 0 :(得分:0)

作为重新获取功能的示例,您可以查看使用GraphQL和apollo客户端(feed page)制作的应用的Feed页面。

截至b)我认为它会在第一次进入页面时两次获取查询。我有一个类似的问题,查询是在父母和孩子中获取的。

我认为你是正确的c)在调用fetchMore后它会重新渲染父