我希望组件从其父组件接收其初始数据,同时仍然能够自己对数据进行分页。
例如,考虑
<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>
定义自己的分页查询而不定义自己的初始查询?
答案 0 :(得分:0)
作为重新获取功能的示例,您可以查看使用GraphQL和apollo客户端(feed page)制作的应用的Feed页面。
截至b)我认为它会在第一次进入页面时两次获取查询。我有一个类似的问题,查询是在父母和孩子中获取的。
我认为你是正确的c)在调用fetchMore后它会重新渲染父