1

RANGE_ADD在进行突变时,我无法弄清楚如何完成看似非常标准的模式。

在页面加载时说我拉入并呈现chatmessagesfirst: 10分页的连接。我现在做AddMessageMutation一个前置到同一个连接的操作。由于连接由连接first: 10的最后一项进行分页,因此现在已经为我的新边缘腾出空间,因此从渲染中删除。我当然可以在突变上添加+1 firstonSuccess但这通常会留下一个奇怪的闪烁效果,即在最后移除和重新插入边缘。

如果我想对连接进行乐观更新,这个问题似乎变得更加困难,因为没有onOptimistic回调。

由于这似乎是一种非常常见的模式,我想我会问我是否以错误的方式接近它。

问题中引用: https ://github.com/facebook/relay/issues/384

4

1 回答 1

0

我认为问题在于您正在增加onSuccess处理程序中的计数(即在服务器响应之后),而您想要做的是与乐观突变一起增加它(即立即)。

尝试这个:

_handleMessageCreated() {
  Relay.Store.update(new AddMessageMutation(
    {/* ... */},
    {onFailure: () => this._handleMessageCreationRollback()}
  );
  // Optimistically increment the count
  this.props.relay.setVariables({
    numMessagesToShow: this.props.relay.variables.numMessagesToShow + 1,
  });
}
_handleMessageCreationRollback() {
 this.props.relay.setVariables({
    numMessagesToShow: this.props.relay.variables.numMessagesToShow - 1,
  });
}

另见:https ://github.com/facebook/relay/issues/135#issuecomment-134400856

于 2015-09-29T03:24:18.903 回答