Skip to content

Instantly share code, notes, and snippets.

@otakustay
Created July 28, 2016 02:55
Show Gist options
  • Select an option

  • Save otakustay/ad9f3cada7d0ec92491de43084fccdb0 to your computer and use it in GitHub Desktop.

Select an option

Save otakustay/ad9f3cada7d0ec92491de43084fccdb0 to your computer and use it in GitHub Desktop.
class PureComponent {
initializeEvent(element, name, expession) {
let func = this[name];
let handler = (e) => {
let newState = func(this.state, parseExpressionToArgs(expression, state, e));
this.render(newState);
}
element.addEventListener(name, handler, false)
}
}
function parseExpressionToArgs(expression, state, e) {
...
}
class PureSpinner extends PureComponent {
render(state) {
let template = '<input /><span on-click="increment">UP</span><span on-click="decrement">DOWN</span>';
return this.renderWithTemplate(template, state);
}
increment(state) {
// Returns new state
return {...state, value: state.value + state.step};
}
decrement(state) {
// Returns state patch
return {value: state.value - state.step};
}
}
let spinner = new Spinner();
let newState = spinner.increment({value: 1, step: 2});
expect(newState).toBe(3);
let {newValue} = spinner.increment({...newState, step: 3});
expect(newValue).toBe(6);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment