关于如何正确处理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 ,提前谢谢,祝你有愉快的一天 .