virtual-dom -> React

This commit is contained in:
Riku Rouvila
2015-01-25 14:29:48 +02:00
parent f5899e6a4c
commit b0690c7ff4
7 changed files with 109 additions and 137 deletions

View File

@@ -1,66 +1,9 @@
'use strict';
require('./ga');
var _ = require('lodash');
var request = require('axios');
var inviteForm = require('./components/inviteForm');
var {diff, patch, create} = require('virtual-dom');
var state = {
email: '',
submitted: false,
error: null
};
function setState(newState) {
state = _.extend({}, state, newState);
rerender(state);
}
var props = {
onSubmit: function(e) {
e.preventDefault();
setState({
submitted: false,
error: null
});
request.post('/api/invites', {
email: state.email
}).then(function() {
setState({submitted: true});
}).catch(function(err) {
setState({error: err});
});
},
onChange: function(e) {
if(e.target.value === state.email) {
return;
}
setState({
email: e.target.value,
error: null,
submitted: false
});
},
};
var tree = inviteForm(props, state);
var rootNode = create(tree);
document
.getElementById('invite-form')
.appendChild(rootNode);
function rerender() {
var newTree = inviteForm(props, state);
var patches = diff(tree, newTree);
rootNode = patch(rootNode, patches);
tree = newTree;
}
var React = require('React');
React.render(
require('./components/inviteForm')(),
document.getElementById('invite-form'));