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