Apollo 客户端和更新表单

Posted

技术标签:

【中文标题】Apollo 客户端和更新表单【英文标题】:Apollo Client and Update Forms 【发布时间】:2018-11-04 07:44:13 【问题描述】:

我想知道是否有人有一个使用 Apollo 客户端以及新的查询和变异组件的更新表单的好例子。我的意思是更新:

使用查询结果填充表单值 在编辑输入时更新组件状态(或 apollo-link-state?)。 提交时更新状态(或 apollo-link-state?)

我现在正在努力解决它,我想知道构建它的最佳方法是什么。我应该使用 Apollo-link-state 来存储表单状态吗?如果没有,我找不到不使用查询 HOC 将查询组件中的道具映射到组件状态对象的方法。任何例子都会很棒!

谢谢!

【问题讨论】:

【参考方案1】:

如果你的应用程序的其他部分不需要访问该状态,apollo-link-state 可能是多余的——常规的组件状态就可以了。只需像使用 HOC 时一样创建一个组件:

class MyComponent extends React.Component 
  constructor (props) 
    super(props)
    this.state = 
      fieldA = props.myQuery.fieldA
      fieldB = props.myQuery.fieldB
    

    render () 
      // your form fields here
    
  

然后你可以这样做:

<Query>
  (data, loading)=>(
    if (loading || error) return null
    <MyComponent myQuery=data.myQuery>
  )
</Query>

【讨论】:

好的,这就是我一直在做的。你把突变放在 MyComponent 里面对吗? 是的,尽管您也可以传递这些值

以上是关于Apollo 客户端和更新表单的主要内容,如果未能解决你的问题,请参考以下文章

登录状态不会在 React、Apollo Client 2、Graphcool 中被动更新

写入缓存时,Apollo 客户端链接状态“ 中缺少字段”?

为啥需要更新器/更新函数来更新 React Relay 和 Apollo 客户端中的本地缓存?

登录表单 React Native 和 Apollo

Apollo 客户端突变错误和更新组件

突变后使用订阅和更新创建重复节点 - 使用 Apollo 客户端