虽然我相信应该有一个内置的机制来解决这个问题,但我最终还是将值存储在状态中并使用回调来触发我的重新获取。
因此,在我从文档中列出的上述示例中,更新似乎发生在此处:
_loadMore() {
// Increments the number of stories being rendered by 10.
const refetchVariables = fragmentVariables => ({
count: fragmentVariables.count + 10,
});
this.props.relay.refetch(refetchVariables, null);
}
所以我对这个特定示例的问题是我们正在从 fragmentVariable 中提取默认状态,因此本质上没有发生真正的变化。根据您的实现,这可能是可以接受的,但我认为对于大多数用例,我们希望看到值实际上被更新为更新片段中的变量。
所以我在基于偏移的分页方面处理这个问题的方式是......
_nextPage = () => {
if ((this.state.offset + this.state.limit) < (this.state.total - this.state.limit) {
this.setState({ offset: (this.state.offset + this.state.limit), () => {
this._loadMore();
}
}
}
_loadMore = () => {
const refetchVariables = {
offset: this.state.offset,
limit: this.state.limit
}
this.props.relay.refetch(refetchVariables, null);
}
可能有错字,我现在实际上并没有在看我的代码。但是通过使用组件的状态,您将能够有效地更新 refetchContainer 的变量。