--- title: Deku v1 category: JavaScript libraries intro: | Quick reference for [Deku](https://www.npmjs.com/package/deku), a minimal virtual DOM library. **Deprecated:** This is for Deku v1. See [deku](./deku) for a more updated cheatsheet. --- ### Example ```js /** @jsx element */ import element from 'virtual-element' // replacement for React.createElement import { render, tree } from 'deku' var app =
Hello World!
render(tree(app), document.body) ``` ### Components ```js Button = { render() { return } } App = { render() { return (
) } } render(tree(), document.body) render(tree(element(App)), document.body) ``` ### Component props/state ```js App = { render ({ props, state }) { return
{ /*...use state.store here*/ }
} initialState (props) { return { store: store.getState() } }, afterMount (comp, el, setState) { store.subscribe(() => setState({ store: store.getState() })) } } render(tree(), document.body) ``` ### Events ```js {props.text} ``` ### Magic virtual element Use [magic-virtual-element](https://github.com/dekujs/magic-virtual-element) to enable nice classnames. ``` import element from 'magic-virtual-element'
``` ### Reference ``` name = 'MyComponent' // Defaults initialState (props) {...} // return initial state defaultProps = { hi: 'hello' } // Render render ({props, state}, setState) {...} // Lifecycle beforeUpdate ({props, state, id}, nextProps, nextState) {} afterRender ({props, state, id}, el) {} afterUpdate ({props, state, id}, prevProps, prevState, setState) {} afterMount ({props, state, id}, el, setState) {} beforeUnmount ({props, state, id}, el) {} ``` See: