如何在 Reactjs 中使用 Apollo 客户端创建更新表单
How to create an update form with Apollo client in Reactjs
我喜欢使用 Apollo 客户端编辑我从 GraphQL api 中获取的联系人列表。我看到很多通过突变添加新项目的例子,但我找不到任何更新现有项目的例子。通常我会创建一个状态对象并使输入字段修改状态对象的属性,但我不确定如何修改已获取的数据。如何保持视图状态更新?
import React, {Component} from 'react';
import gql from 'graphql-tag';
import { graphql } from 'react-apollo';
class EditContact extends Component {
_update() {
// Mutation call
}
render() {
if(this.props.contactQuery && this.props.contactQuery.loading) {
return <div>Loading</div>
}
if(this.props.contactQuery && this.props.contactQuery.error) {
return <div>Error</div>
}
const contact = this.props.contactQuery.contact;
return(
<div className="contact">
<input type="text" defaultValue={contact.firstName} onChange={??} />
<input type="submit" value="Save" onClick={this._update}>
</div>)
}
}
const CONTACT_QUERY = gql`
query contactQuery($id: Int!) {
contact(id: $id) {
id
firstName
lastName
}
}
`
export default graphql(CONTACT_QUERY, {
name: 'contactQuery',
options: ownProps => ({ variables: { id: ownProps.match.params.id } })
})(EditContact);
我知道如何创建和使用变更本身,但如何跟踪表单更改以及如何在表单字段中设置初始数据?
您想使用受控输入,我在这里了解了它们:https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/
我喜欢使用 Apollo 客户端编辑我从 GraphQL api 中获取的联系人列表。我看到很多通过突变添加新项目的例子,但我找不到任何更新现有项目的例子。通常我会创建一个状态对象并使输入字段修改状态对象的属性,但我不确定如何修改已获取的数据。如何保持视图状态更新?
import React, {Component} from 'react';
import gql from 'graphql-tag';
import { graphql } from 'react-apollo';
class EditContact extends Component {
_update() {
// Mutation call
}
render() {
if(this.props.contactQuery && this.props.contactQuery.loading) {
return <div>Loading</div>
}
if(this.props.contactQuery && this.props.contactQuery.error) {
return <div>Error</div>
}
const contact = this.props.contactQuery.contact;
return(
<div className="contact">
<input type="text" defaultValue={contact.firstName} onChange={??} />
<input type="submit" value="Save" onClick={this._update}>
</div>)
}
}
const CONTACT_QUERY = gql`
query contactQuery($id: Int!) {
contact(id: $id) {
id
firstName
lastName
}
}
`
export default graphql(CONTACT_QUERY, {
name: 'contactQuery',
options: ownProps => ({ variables: { id: ownProps.match.params.id } })
})(EditContact);
我知道如何创建和使用变更本身,但如何跟踪表单更改以及如何在表单字段中设置初始数据?
您想使用受控输入,我在这里了解了它们:https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/