Advertisement
Guest User

Untitled

a guest
Jul 13th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import { Formik } from 'formik';
  3. import Yup from 'yup';
  4. import autobind from 'class-autobind';
  5. import './App.css';
  6.  
  7. const Login = ({
  8. values,
  9. touched,
  10. errors,
  11. error,
  12. handleChange,
  13. handleSubmit,
  14. handleBlur,
  15. handleReset,
  16. isSubmitting
  17. }) => (
  18. <form onSubmit={handleSubmit}>
  19. {error && <div className="callout alert">{error}</div> }
  20. <div className="grid-container" style={{ width: '50%', margin: '0 auto' }}>
  21. <div className="grid-x grid-margin-x">
  22. <div className="cell">
  23. <label>Username
  24. <input name="username" type="text" onChange={handleChange} value={values.username}/>
  25. </label>
  26. {errors.username && touched.username && <div className="callout alert">{errors.username}</div>}
  27. <label>Password
  28. <input type="password" name="password" onChange={handleChange} value={values.password}/>
  29. </label>
  30. {errors.password && touched.password && <div className="callout alert">{errors.password}</div>}
  31. <button className="button" type="submit" disabled={isSubmitting}>Submit</button>
  32. </div>
  33. </div>
  34. </div>
  35. </form>
  36. );
  37.  
  38. // LoginForm = class LoginForm extends Component {...
  39. const LoginForm = Formik({
  40. validationSchema: Yup.object().shape({
  41. username: Yup.string().email().required(),
  42. password: Yup.string().required(),
  43. }),
  44.  
  45. mapPropsToValues: props => ({
  46. username: props.form.social.twitter,
  47. password: props.password || '',
  48. }),
  49.  
  50. mapValuesToPayload: values => ({
  51. form: {
  52. social: {
  53. twitter: values.username,
  54. },
  55. password: values.password,
  56. }
  57. }),
  58.  
  59. handleSubmit: (payload, { props, setError, setSubmitting }) => {
  60. setError('Server hates us!');
  61. setSubmitting(false)
  62. props.onSuccess(payload);
  63. },
  64. })(Login);
  65.  
  66.  
  67. class App extends Component {
  68. constructor(props) {
  69. super(props)
  70. autobind(this);
  71. this.state = {
  72. };
  73. }
  74. onSuccess(payload) {
  75. // this.setState({message: 'Succcess!'});
  76. console.log(payload);
  77. }
  78. render() {
  79. const form = {
  80. social: {
  81. twitter: 'stuff'
  82. }
  83. }
  84. return (
  85. <div className="App">
  86. {this.state.message && <div className="callout primary">{this.state.message}</div>}
  87. <LoginForm form={form} onSuccess={this.onSuccess}/>
  88. </div>
  89. );
  90. }
  91. }
  92.  
  93. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement