阿波罗的突变过程

Posted

技术标签:

【中文标题】阿波罗的突变过程【英文标题】:Mutation process in Apollo 【发布时间】:2019-02-20 21:57:47 【问题描述】:

这是我目前的代码:

<Mutation mutation=addUserQuery>


(addUser, data)=>
console.log(data)
return (

  <div className="form">
  <form onSubmit=(e)=>

  e.preventDefault();
  console.log(e);
  addUser(variables: username: "AuraDivitiae", 
                          firstname: "Michael", 
                          lastname: "Lee")

  >

  <button type="submit">Add User</button>
  </form>         
  </div>

)



</Mutation>

当突变组件挂载时,Apollo 会做什么? 我觉得我不太了解 Apollo 内部运行的进程。 Apollo 是否订阅突变查询的结果? 然后它会在返回时更新缓存吗? 那么Data是否存储在某些组件状态中?

我觉得文档有时没有提供足够的信息...

【问题讨论】:

【参考方案1】:

&lt;Mutation/&gt; 组件是...normal react component - 它有自己的状态、生命周期、使用 apollo 客户端(及其缓存)、保存数据。

在渲染中我们的重新渲染不是由组件的setState 引起的,这可能有点令人困惑。

如果&lt;Mutation/&gt; 是一个组件,那么事实上你的内部内容是由&lt;Mutation/&gt;render 函数呈现的,而不是在我们的组件中(它只呈现&lt;Mutation/&gt; 组件)。这是组件树结构(具有自己的生命周期)中的附加深度级别

【讨论】:

以上是关于阿波罗的突变过程的主要内容,如果未能解决你的问题,请参考以下文章

反应阿波罗突变和乐观更新

阿波罗:多重突变

如何在阿波罗客户端中将突变链接在一起

突变后反应阿波罗不更新数据

如何处理阿波罗客户端上的突变错误?

阿波罗突变未出现在道具中