2016-01-07 05:47:48 +01:00
---
title: Deku v1
category: JavaScript libraries
2020-07-05 15:13:06 +02:00
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.
2016-01-07 05:47:48 +01:00
---
2020-07-05 15:13:06 +02:00
### Example
2017-09-04 04:56:22 +02:00
2016-01-07 05:47:48 +01:00
```js
/** @jsx element */
2020-07-05 15:13:06 +02:00
import element from 'virtual-element' // replacement for React.createElement
import { render, tree } from 'deku'
2016-01-07 05:47:48 +01:00
var app = < div class = 'my-app' > Hello World!< / div >
render(tree(app), document.body)
```
2020-07-05 15:13:06 +02:00
### Components
2016-01-07 05:47:48 +01:00
```js
Button = {
2020-07-05 15:13:06 +02:00
render() {
return < button > Submit< / button >
}
2016-01-07 05:47:48 +01:00
}
App = {
2020-07-05 15:13:06 +02:00
render() {
return (
< div >
< Button / >
< / div >
)
}
2016-01-07 05:47:48 +01:00
}
render(tree(< App / > ), document.body)
render(tree(element(App)), document.body)
```
2020-07-05 15:13:06 +02:00
### Component props/state
2016-01-07 05:47:48 +01:00
```js
App = {
render ({ props, state }) {
return < div > { /*...use state.store here*/ }< / div >
}
initialState (props) {
return { store: store.getState() }
},
afterMount (comp, el, setState) {
store.subscribe(() => setState({ store: store.getState() }))
}
}
render(tree(< App / > ), document.body)
```
2020-07-05 15:13:06 +02:00
### Events
2016-01-07 05:47:48 +01:00
```js
< a onClick = {onClick} > {props.text}< / a >
```
2020-07-05 15:13:06 +02:00
### Magic virtual element
2016-01-07 05:47:48 +01:00
Use [magic-virtual-element ](https://github.com/dekujs/magic-virtual-element ) to enable nice classnames.
```
import element from 'magic-virtual-element'
< div style = {style} class = {[ ' button ' , ' -active ' ] } >
```
2020-07-05 15:13:06 +02:00
### Reference
2016-01-07 05:47:48 +01:00
```
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: < https: / / www . npmjs . com / package / deku >