var dom = Bloop.dom; // components var App = Bloop.createClass({ getInitialState: function() { return { number: 0 }; }, updateNumber: function(value) { this.state.number = value; }, render: function() { return dom.div( dom.span(this.state.number), Toolbar({ number: this.state.number, onChange: this.updateNumber }) ); } }); var Toolbar = Bloop.createClass({ render: function() { return dom.div( dom.button({ onClick: this.props.onChange.bind(null, this.props.number - 1) }, 'decrement'), dom.button({ onClick: this.props.onChange.bind(null, this.props.number + 1) }, 'increment') ); } }); // render var app = App(); function render() { Bloop.renderComponent(app, document.body); requestAnimationFrame(render); } render();