Created
January 5, 2017 20:17
-
-
Save vojtatranta/7dac99677928d3ff444716e1baa7d63d to your computer and use it in GitHub Desktop.
This file contains 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
//pohoda, žádnej callback | |
const fn = (props) => { | |
return div({ | |
}, props.text) | |
} | |
// budu chtít zařídit to, aby se po kliknutí něco stalo | |
props.onClick = (event) => { //pičoviny } | |
const fn = (props) => { | |
return div({ | |
onClick: props.onClick, | |
}, props.text) | |
} | |
//pořád pohoda | |
//budu potřebovat poslat informaci, na co se kliklo, třeba nějaké ID | |
// ale jak to mám dostat nahoru do callbacku? | |
props.onClick = (event) => { //pičoviny } | |
const fn = (props) => { | |
const handler = () => { | |
props.onClick(props.id) | |
} | |
return div({ | |
onClick: handler, | |
}, props.text) | |
} | |
// hotovo... | |
// oh wait, dy to je to ale naprosto stejné jako tady | |
const fn = (props) => { | |
return div({ | |
onClick: () => props.onClick(props.id), | |
}, props.text) | |
} | |
// naprosto stejnej kod, ne? | |
// tak jak se z toho dostat? | |
// no nijak, máš na výběr - buďto se něco mění (použiješ nějakou třídu a její instance pak slouží jako jednotlivé komponenty po celé stránce) | |
// nebo budeš pořád dokola něco "vytvářet" - typicky funkce nebo objekty. To má za následek toho, se zbavíš instancí (stavu), | |
// alez ase to bude žrát víc paměti, pře furt vytvářit něco nového. | |
// jaké použít řešení? Je to jedno, paměti je dost a bez tříd se zbavíš stavu. Ale zase je pro lidi těžko čitelný takovýhle kod | |
const createDisptach = (initialsState, reducer, renderFn) => { | |
return (action) => { | |
const nextState = reducer(initialState, action) | |
return renderFn(nextState, createDispatch(nextState, reducer, renderFn)) | |
} | |
} | |
const renderApp = (state, dispatch) => { | |
return div({ | |
onClick: () => dispatch({ ... }) | |
}, state.text) | |
} | |
reducer = (state, action) => state | |
const dispatch = createDispatch({text: 'ahoj'}, reducer, renderApp) | |
dispatch({ | |
'TYPE': '@@INIT@@', | |
}) | |
// hurá máme Redux | |
// Napsat to ve třídách je prostě čitelnější | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment