earl-react
Version:
Earl Grey macros for React
57 lines (44 loc) • 1.51 kB
Markdown
earl-react
==========
`earl-react` defines a set of macros to ease development with the
React framework.
What follows is the todo list example from React's homepage, rewritten
with [Earl Grey](http://earl-grey.io) and earl-react:
`script.eg`:
require:
earl-react as React
/browser -> document
require-macros:
earl-react ->
%, component
component TodoList:
render() =
ul % enumerate(.items) each {i, item} ->
li %
key = i + item
item
component TodoApp:
get-initial-state() =
{items = {}, text = ""}
render() =
div %
h3 % "TODO"
TodoList % items = .items
form %
on-submit(e) =
e.prevent-default()
-state with {
items = .items.concat({.text})
text = ""
}
input %
value = .text
on-change(e) =
-state with {text = e.target.value}
button % 'Add #{.items.length + 1}'
document.onload(e) =
mount-node = document.get-element-by-id("mount")
React.render(TodoApp %, mount-node)
Then you can compile with browserify and earlify:
browserify -t earlify script.eg > bundle.js
Then include `bundle.js` on a page with some div with id "mount".