关于如何正确处理Apollo for React中的突变,我有一个小问题。
场合
我想在成功突变后设置组件的状态 - 但在设置状态之前我想执行其他突变(使用@client
)。突变返回承诺,所以我的第一次尝试是链承诺,但后来我意识到远程突变可能需要很长时间,用户可以转到另一个页面,当承诺解决我的组件将未安装已经。
目前我考虑了两种解决问题的方法:
使用 EventEmitter 并在突变完成时发出事件。订阅componentDidMount
并取消订阅componentWillUnmount
。
使用可取消的承诺 - 这在React docs中推荐(https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html),但它不是标准,看起来有点“hackish”,尤其是在promise链上。
但我觉得应该有一个更好的方式,提前感谢并度过美好的一天。