simple-ducks-builders
simple redux ducks module builders
simpleListBuilder
# state.coffee import getList from './dataProvider'import simpleListBuilder from 'simple-ducks-builders' MODULE = 'myList' moduleBuilder = simpleListBuilderMODULE export reducer = moduleBuilderreducerexport actions = : -> moduleBuilderactionsloadListgetList
# dataProvider.coffee export = -> resolve id:1title:'a'id:2title:'2'
container.coffee:
import connect from 'react-redux'import bindActionCreators from 'redux'import actions as myListActions from './state' = : -> @propsactionsloadList : -> @propsmyListState return <span>loading</span> if isLoading || !isReady <div> for item in list <div key=itemid>itemtitle</div> </div> = myListState: statemyList = actions: bindActionCreators myListActionsdispatch export default connectmapStatemapActionsContainer
simpleFormBuilder
# state.coffee import simpleFormBuilder from 'simple-ducks-builders'MODULE_STATE_NAME = 'myItem' formBuilder = simpleFormBuilderMODULE_STATE_NAME = formBuilderactionsloadItem getItembindnullidsaveItem = formBuilderactionssaveItem updateItem export reducer = formBuilderreducerexport actions = loadItem saveItem setField: formBuilderactionssetField
# container.coffee import connect from 'react-redux'import bindActionCreators from 'redux'import actions as myItemActions from './state' = : -> @propsactionsloadItem@propsid : -> @propsmyItemState @propsactions return <span>loading</span> if isLoading || !isReady <div> <input value=itemtitle onChange= setField 'title'etargetvalue disabled=inProgress /> <button onClick=saveItem disabled=!isChanged || inProgress >Save</button> </div> = id: Number routerparamsid myItemState: statemyItem = actions: bindActionCreators myItemActionsdispatch export default connectmapStatemapActionsContainer