由于分页的处理方式,最近决定将我的 Relay Client 转换为 Apollo。我正在开发的应用程序需要基于偏移的分页,这在 Apollo 中得到了更好的支持。
在尝试根据 Apollo 文档http://dev.apollodata.com/react/pagination.html#numbered-pages实现偏移分页时,但继续收到我的查看器未定义的错误。
当我在渲染期间从 props 访问数据时引用此错误,并且仅在我尝试实现 fetchMore 函数时发生。我感觉这与我的设置有关,因为我viewer
在 GraphQL 查询中使用了入口点,但尽管尝试修改设置,但错误仍然存在。
... ... ...
105 props: ({ data: { loading, viewer, fetchMore }}) => ({
106 loading,
107 viewer,
108 loadMoreEntries() {
109 return fetchMore({
110 variables: {
111 offset: viewer.allSweeps.edges.length
112 },
113 updateQuery: (previousResult, { fetchMoreResult }) => {
114 if (!fetchMoreResult) { return previousResult; }
115 return Object.assign({}, previousResult, {
116 viewer: [...previousResult.allSweeps, ...fetchMoreResult.allSweeps]
117 });
118 }
119 });
120 }
... ... ..
编辑 1:到目前为止,此错误似乎与生命周期问题有关。进行一些调试时,我注意到当执行简单查询时存在先前数据时,这种分页方法导致初始道具加载而查看器中没有任何数据。
希望使用其中一种 React 生命周期方法来跟踪此更改,以查看我是否可以将数据分配给变量。但是,仍然不确定此方法是否设置正确。在我确定之前需要获取数据然后尝试分页。
编辑 2:能够使用 componentWillUpdate 来获得对正在传播的数据的细粒度控制。这样这一步就解决了。现在只需要研究实际的分页机制。