关于如何正确处理Apollo for React中的突变,我有一个小问题 .

Situation

我想在成功突变后设置组件的状态 - 但在设置状态之前我想执行其他突变(使用 @client ) . 突变返回承诺,所以我的第一次尝试是 chain promises ,但后来我意识到远程突变可能需要很长时间,用户可以转到另一个页面,当承诺解决我的组件时,已经 unmounted .

目前我考虑了两种解决问题的方法:

  • 使用 EventEmitter 并在突变完成时发出事件 . 订阅 componentDidMount 并取消订阅 componentWillUnmount .

  • 在React docs中使用 cancelable promises - 这是推荐的(https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html),但它不是标准的,看起来有点"hackish",尤其是在promise链上 .

但我觉得应该有一个 better way ,提前谢谢,祝你有愉快的一天 .