Litt kode:
var TodoApp = React.createClass({
getInitialState: function () {
return {
initialText: "Nothing here",
editing: null
};
},
componentDidMount: function () {
// Init stuff
},
render: function () {
// ...
}
});
Hver komponent holder data i props og state. State er komponentens interne tilstand og endres kun av komponenten selv. Props skal derimot ikke endres av komponenten selv men endres gjerne ifm. at foreldre-komponenten rendres. Du kan egentlig tenke på en komponent som en funksjon av props - du sender props inn, og får en rendret (, interaktiv) komponent ut.
render: function () {
var todoItems = this.props.todos.map(
function (todo) {
return TodoItem({key: todo.id, todo: todo});
});
return d.div(
{className: 'container'},
todoItems,
d.button({onClick: this.handleClick}, "Klikk meg")
);
}
this.refs.helloTo.getDOMNode().value;
En liten digresjon her: React kommer med en precompiler(?) som lar deg bruke et html-liknende syntax sammen med javascript-koden. Dette kaller de JSX. Jeg kommer ikke til å bruke dette her fordi jeg synes det er en unødvendig kompleksitet (?) som gir liten gevinst.
I JSX:
function render() {
var todoItems = todos.map(
function (todo) {
return (
<TodoItem key={todo.id} todo={todo} />
);
}
);
return (
<div className="container">
{todoItems}
</div>
);
}
Kompilert til javascript:
function render() {
var todoItems = todos.map(
function (todo) {
return TodoItem({key: todo.id, todo: todo});
});
return d.div(
{className: 'container'},
todoItems
);
}