Created
July 28, 2016 02:55
-
-
Save otakustay/ad9f3cada7d0ec92491de43084fccdb0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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) { | |
| ... | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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}; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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