Skip to content

Instantly share code, notes, and snippets.

@msaglietto
Created August 29, 2016 15:15
Show Gist options
  • Save msaglietto/3a7096ccb9dea70eabc794291ca16c2a to your computer and use it in GitHub Desktop.
Save msaglietto/3a7096ccb9dea70eabc794291ca16c2a to your computer and use it in GitHub Desktop.
esnextbin sketch
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ESNextbin Sketch</title>
<!-- put additional styles and scripts here -->
</head>
<body>
<!-- put markup and other contents here -->
<div id="test"></div>
</body>
</html>
// write ES2015 code and import modules from npm
// and then press "Execute" to run your program
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import { createStore, combineReducers } from 'redux';
import { Provider, connect } from 'react-redux';
import { reducer as formReducer, Field, reduxForm } from 'redux-form';
const reducers = {
// ... your other reducers here ...
form: formReducer // <---- Mounted at 'form'
};
const reducer = combineReducers(reducers);
const store = createStore(reducer);
class ContactForm extends Component {
componentWillReceiveProps(nextProps) {
console.log(nextProps)
}
handleSubmit() {
}
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={handleSubmit(this.handleSubmit)}>
<div>
<label htmlFor="firstName">First Name</label>
<Field name="firstName" component="input" type="text"/>
</div>
<div>
<label htmlFor="lastName">Last Name</label>
<Field name="lastName" component="input" type="text"/>
</div>
<div>
<label htmlFor="email">Email</label>
<Field name="email" component="input" type="email"/>
</div>
<button type="submit">Submit</button>
</form>
);
}
}
// Decorate the form component
ContactFormContainer = connect()(reduxForm({
form: 'contact', // a unique name for this form
validate: ({firstName, lastName}) => {
const error = {};
if(!firstName) error.firstName = 'First Error';
if(!lastName) error.lastName = 'Last Error';
return error;
}
})(ContactForm));
ReactDOM.render(<Provider store={store}><ContactFormContainer /></Provider>, document.getElementById('test'));
{
"name": "esnextbin-sketch",
"version": "0.0.0",
"dependencies": {
"react": "15.3.1",
"react-dom": "15.3.1",
"redux": "3.5.2",
"react-redux": "4.4.5",
"redux-form": "6.0.1",
"babel-runtime": "6.11.6"
}
}
'use strict';
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _redux = require('redux');
var _reactRedux = require('react-redux');
var _reduxForm = require('redux-form');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var reducers = {
// ... your other reducers here ...
form: _reduxForm.reducer // <---- Mounted at 'form'
}; // write ES2015 code and import modules from npm
// and then press "Execute" to run your program
var reducer = (0, _redux.combineReducers)(reducers);
var store = (0, _redux.createStore)(reducer);
var ContactForm = function (_Component) {
(0, _inherits3.default)(ContactForm, _Component);
function ContactForm() {
(0, _classCallCheck3.default)(this, ContactForm);
return (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(ContactForm).apply(this, arguments));
}
(0, _createClass3.default)(ContactForm, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
console.log(nextProps);
}
}, {
key: 'handleSubmit',
value: function handleSubmit() {}
}, {
key: 'render',
value: function render() {
var handleSubmit = this.props.handleSubmit;
return _react2.default.createElement(
'form',
{ onSubmit: handleSubmit(this.handleSubmit) },
_react2.default.createElement(
'div',
null,
_react2.default.createElement(
'label',
{ htmlFor: 'firstName' },
'First Name'
),
_react2.default.createElement(_reduxForm.Field, { name: 'firstName', component: 'input', type: 'text' })
),
_react2.default.createElement(
'div',
null,
_react2.default.createElement(
'label',
{ htmlFor: 'lastName' },
'Last Name'
),
_react2.default.createElement(_reduxForm.Field, { name: 'lastName', component: 'input', type: 'text' })
),
_react2.default.createElement(
'div',
null,
_react2.default.createElement(
'label',
{ htmlFor: 'email' },
'Email'
),
_react2.default.createElement(_reduxForm.Field, { name: 'email', component: 'input', type: 'email' })
),
_react2.default.createElement(
'button',
{ type: 'submit' },
'Submit'
)
);
}
}]);
return ContactForm;
}(_react.Component);
// Decorate the form component
ContactFormContainer = (0, _reactRedux.connect)()((0, _reduxForm.reduxForm)({
form: 'contact', // a unique name for this form
validate: function validate(_ref) {
var firstName = _ref.firstName;
var lastName = _ref.lastName;
var error = {};
if (!firstName) error.firstName = 'First Error';
if (!lastName) error.lastName = 'Last Error';
return error;
}
})(ContactForm));
_reactDom2.default.render(_react2.default.createElement(
_reactRedux.Provider,
{ store: store },
_react2.default.createElement(ContactFormContainer, null)
), document.getElementById('test'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment