Skip to content

Instantly share code, notes, and snippets.

@chrisbuttery
Last active August 29, 2015 14:20
Show Gist options
  • Save chrisbuttery/4fdf6ac9b15914517f3e to your computer and use it in GitHub Desktop.
Save chrisbuttery/4fdf6ac9b15914517f3e to your computer and use it in GitHub Desktop.
Deku: Counter
import { tree, render, element } from 'deku';
let Counter = {
initialState () {
return {
secondsElapsed: 0
}
},
render (component) {
let { props, state } = component
let { secondsElapsed } = state;
return element('span', [ 'Seconds Elapsed: ' + secondsElapsed ]);
},
afterUpdate (component) {
let { props, state } = component;
if (state.secondsElapsed && state.secondsElapsed % 10 === 0) props.onAnEmittedEventFromCounter();
},
afterMount (component, el, setState) {
var counter = 0;
component.interval = setInterval(() => {
setState({ secondsElapsed: counter++ })
}, 1000);
},
beforeUnmount (component) {
clearInterval(component.interval);
}
}
function doSomething() {
console.log('I did something.');
}
let counter = tree(
<Counter onAnEmittedEventFromCounter={ doSomething }></Counter>
);
render(counter, document.body);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment