An open API service indexing awesome lists of open source software.

https://github.com/breuleux/earl-react

Earl Grey macros for React
https://github.com/breuleux/earl-react

Last synced: about 1 month ago
JSON representation

Earl Grey macros for React

Awesome Lists containing this project

README

        

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(@props.items) each {i, item} ->
li %
key = i + item
item

component TodoApp:
get-initial-state() =
{items = {}, text = ""}
render() =
div %
h3 % "TODO"
TodoList % items = @state.items
form %
on-submit(e) =
e.prevent-default()
@set-state with {
items = @state.items.concat({@state.text})
text = ""
}
input %
value = @state.text
on-change(e) =
@set-state with {text = e.target.value}
button % 'Add #{@state.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".