Skip to content

Instantly share code, notes, and snippets.

@erickeno
Last active August 2, 2016 20:37
Show Gist options
  • Save erickeno/a195e792aba3d52f45e6652bec6eb531 to your computer and use it in GitHub Desktop.
Save erickeno/a195e792aba3d52f45e6652bec6eb531 to your computer and use it in GitHub Desktop.
esnextbin sketch
Small react-redux counter application
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ESNextbin Sketch</title>
<!-- put additional styles and scripts here -->
</head>
<body>
<div id="app"></div>
</body>
</html>
import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import { createStore } from 'redux'
import { connect } from 'react-redux'
//action
function add() {
return {type: 'INCREMENT'}
}
function remove(){
return {type: 'DECREMENT'}
}
// reducer
function counter(state=0, action) {
switch(action.type) {
case 'INCREMENT':
return state +1
case 'DECREMENT':
return state - 1;
default:
return state;
}
}
// store
const store = createStore(counter)
class Counter extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
return(
<div>
<p>Current Count: {this.props.value}</p>
<button onClick={this.props.onIncrement}>+</button>{' '}
<button onClick={this.props.onDecrement}>-</button>
</div>
);
}
}
function render() {
ReactDOM.render(
<Counter
value={store.getState()}
onIncrement={() => store.dispatch(add())}
onDecrement={() => store.dispatch(remove())}
/>,
document.getElementById('app')
)
}
render();
store.subscribe(render);
{
"name": "esnextbin-sketch",
"version": "0.0.0",
"dependencies": {
"react": "15.3.0",
"react-dom": "15.3.0",
"redux": "3.5.2",
"react-redux": "4.4.5",
"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');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//action
function add() {
return { type: 'INCREMENT' };
}
function remove() {
return { type: 'DECREMENT' };
}
// reducer
function counter() {
var state = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
var action = arguments[1];
switch (action.type) {
case 'INCREMENT':
return state + 1;
case 'DECREMENT':
return state - 1;
default:
return state;
}
}
// store
var store = (0, _redux.createStore)(counter);
var Counter = function (_Component) {
(0, _inherits3.default)(Counter, _Component);
function Counter(props) {
(0, _classCallCheck3.default)(this, Counter);
var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(Counter).call(this, props));
_this.state = {};
return _this;
}
(0, _createClass3.default)(Counter, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(
'p',
null,
'Current Count: ',
this.props.value
),
_react2.default.createElement(
'button',
{ onClick: this.props.onIncrement },
'+'
),
' ',
_react2.default.createElement(
'button',
{ onClick: this.props.onDecrement },
'-'
)
);
}
}]);
return Counter;
}(_react.Component);
function render() {
_reactDom2.default.render(_react2.default.createElement(Counter, {
value: store.getState(),
onIncrement: function onIncrement() {
return store.dispatch(add());
},
onDecrement: function onDecrement() {
return store.dispatch(remove());
}
}), document.getElementById('app'));
}
render();
store.subscribe(render);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment