Learn to create a simple Todo App with Metal.js and JSX
Updating State
Now you're ready to update the state in TodoApp. In the last step, you added an event listener:
// TodoApp.js
class TodoApp extends JSXComponent {
    ...
    handleTodoClick(event) {
        alert(event.index);
    }
}Now all you need to do is update the state so that the template rerenders:
// TodoApp.js
class TodoApp extends JSXComponent {
    ...
    handleTodoClick(event) {
        this.toggleTodo(event.index);
    }
    toggleTodo(clickedIndex) {
        this.state.todos = this.state.todos.map((todo, index) => {
            if (clickedIndex === index) {
                todo.done = !todo.done;
            }
            return todo;
        });
    }
}This toggles the done property of the todo that was clicked. Simply setting the this.state.todos property to a new array of todos triggers a rerender, passing the data to the child components. Your markup should look like this once you've clicked a todo item:
<div class="todo-app">
    <ul>
        <li class="todo-item todo-item-done">Todo 1</li>
        <li class="todo-item">Todo 2</li>
    </ul>
</div>
