mirror of
https://github.com/koodiklinikka/koodiklinikka.fi.git
synced 2026-03-04 19:00:01 +00:00
virtual-dom -> React
This commit is contained in:
@@ -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'));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user