@benev/slate
Version:
frontend web stuff
32 lines (22 loc) • 770 B
text/typescript
import {slate} from "../frontend.js"
import {html} from "../../nexus/html.js"
export const QuartzTripler = slate.lightView(use => (start: number) => {
use.name("quartz-tripler")
// react hooks state
const [alpha, setAlpha] = use.state(start)
const increaseAlpha = () => setAlpha(alpha * 3)
// flatstate
const bravo = use.flatstate({count: start})
const increaseBravo = () => bravo.count *= 3
// preact signals
const charlie = use.signal(start)
const increaseCharlie = () => charlie.value *= 3
return html`
<span>${alpha}</span>
<button @click=${increaseAlpha}>quartz-a</button>
<span>${bravo.count}</span>
<button @click=${increaseBravo}>quartz-b</button>
<span>${charlie}</span>
<button @click=${increaseCharlie}>quartz-c</button>
`
})