Here’s a basic “Hello World” example.
/* @jsx element */
import { dom, element } from 'decca'
const Message = {
render ({ props }) {
return <div>Hello there, {props.name}</div>
}
}
// Render the app tree
const render = dom.createRenderer(document.body)
render(<Message name='Rico S.' />)
Pass store.dispatch
to createRenderer(), and store.getState()
to render().
import { createStore } from 'redux'
const store = createStore(/*...*/)
const render = dom.createRenderer(document.body, store.dispatch)
function update () {
render(<Message name='Rico S.' />, store.getState())
}
stoer.subscribe(update)
update()
Components at least have a render()
function.
import { element } from 'decca'
exports.render = function ({props, children, context, dispatch, path}) {
/* no-jsx */
return element('div', {class: 'hello'}, 'hello there')
/* jsx */
return <div class='hello'>hello there</div>
}
The model has:
children
- children passed onto componentprops
- properties passed onto componentpath
- unique ID of component instancecontext
- taken from render()dispatch
- taken from createRenderer()The following hooks are supported:
exports.onCreate = (model) => { ... } // on first create
exports.onUpdate = (model) => { ... } // on every render
exports.onRemove = (model) => { ... } // after removal