diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-03-22 16:29:31 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-03-22 16:29:31 -0400 |
| commit | a6af043686e4375d7944e91cae3d5b63c59edab0 (patch) | |
| tree | f814d412b14a2a47f56c933ce38f458055f2f83b /frontend/components/ResetRequest.js | |
| parent | 93495ce146c4e81ecfab3a0bca99460e75a759da (diff) | |
Migrate to render props
Diffstat (limited to 'frontend/components/ResetRequest.js')
| -rw-r--r-- | frontend/components/ResetRequest.js | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/frontend/components/ResetRequest.js b/frontend/components/ResetRequest.js index 0910e5f..fb6f660 100644 --- a/frontend/components/ResetRequest.js +++ b/frontend/components/ResetRequest.js @@ -1,52 +1,45 @@ -import React, { Component } from 'react'; -import { graphql, compose } from 'react-apollo'; -import PropTypes from 'prop-types'; +import React from 'react'; +import { Mutation } from 'react-apollo'; import { REQUEST_RESET_MUTATION } from '../queries'; import Form from './styles/Form'; +import Error from './ErrorMessage'; -class ResetRequest extends Component { - static propTypes = { - requestReset: PropTypes.func.isRequired, - }; - +class ResetRequest extends React.Component { state = { email: '', - errors: [], - }; - - requestReset = async e => { - e.preventDefault(); - const res = await this.props.requestReset({ - variables: { - email: this.state.email, - }, - }); - if (res.errors) { - this.setState({ errors: res.errors }); - } - }; - - saveToState = e => { - const { name, value } = e.target; - this.setState({ [name]: value }); }; render() { return ( - <Form onSubmit={this.requestReset}> - {this.state.errors ? this.state.errors.map((err, i) => <p key={i}>{err.message}</p>) : null} - <label htmlFor="email"> - Email - <input value={this.state.email} onChange={this.saveToState} name="email" type="text" placeholder="email" /> - </label> + <Mutation mutation={REQUEST_RESET_MUTATION} variables={this.state}> + {(resetMutation, { loading, error }) => ( + <Form + onSubmit={async e => { + e.preventDefault(); + const res = await resetMutation(); + console.log(res); + }} + > + <Error error={error} /> + <fieldset disabled={loading} aria-busy={loading}> + <label htmlFor="email"> + Email + <input + value={this.state.email} + onChange={e => this.setState({ email: e.target.value })} + name="email" + type="text" + placeholder="email" + /> + </label> - <button type="submit">Request Reset!</button> - </Form> + <button type="submit">Request Reset!</button> + </fieldset> + </Form> + )} + </Mutation> ); } } -const requestResetEnhancer = graphql(REQUEST_RESET_MUTATION, { name: 'requestReset' }); - -export default compose(requestResetEnhancer)(ResetRequest); -export { ResetRequest }; +export default ResetRequest; |
