# 🦉 Quick Overview 🦉 Owl components in an application are used to define a (dynamic) tree of components. ``` Root / \ A B / \ C D ``` **State:** each component can manage its own local state. It is a simple ES6 class, there are no special rules: ```js class Counter extends Component { static template = xml` `; state = { value: 0 }; increment() { this.state.value++; this.render(); } } ``` The example above shows a component with a local state. Note that since there is nothing magical to the `state` object, we need to manually call the `render` function whenever we update it. This can quickly become annoying (and not efficient if we do it too much). There is a better way: using the `useState` hook, which transforms an object into a reactive version of itself: ```js const { useState } = owl.hooks; class Counter extends Component { static template = xml` `; state = useState({ value: 0 }); increment() { this.state.value++; } } ``` Note that the `t-on-click` handler can even be replaced by an inline statement: ```xml