import React, { Component } from 'react'; import { Mutation, Query } from 'react-apollo'; import gql from 'graphql-tag'; import Router from 'next/router'; import Form from './styles/Form'; import formatMoney from '../lib/formatMoney'; import Error from './ErrorMessage'; const SINGLE_ITEM_QUERY = gql` query SINGLE_ITEM_QUERY($id: ID!) { item(where: { id: $id }) { id title description price } } `; const UPDATE_ITEM_MUTATION = gql` mutation UPDATE_ITEM_MUTATION($id: ID!, $title: String, $description: String, $price: Int) { updateItem(id: $id, title: $title, description: $description, price: $price) { id title description price } } `; class UpdateItem extends Component { state = {}; handleChange = e => { const { name, type, value } = e.target; const val = type === 'number' ? parseFloat(value) : value; this.setState({ [name]: val }); }; updateItem = async (e, updateItemMutation) => { e.preventDefault(); console.log('Updating Item!!'); console.log(this.state); const res = await updateItemMutation({ variables: { id: this.props.id, ...this.state, }, }); console.log('Updated!!'); }; render() { return ( {({ data, loading }) => { if (loading) return

Loading...

; if (!data.item) return

No Item Found for ID {this.props.id}

; return ( {(updateItem, { loading, error }) => (
this.updateItem(e, updateItem)}>