## Input
```typescript=
const useCounter = () => {
return useState({count: 0});
}
export const App = qComponent(() => {
const state = useCounter();
const thing = useState({thing: 0});
onRender(() => {
const count2 = state.count * 2;
return (
<div on:click={() => state.count+=count2 }>
<span>{state.count}</span>
{buttons.map(btn => (
<button
on:click={() => state.count += btn.offset + thing}
>
{btn.name}
<button>
))}
</div>
)
});
})
```
> [name=Miško Hevery]
> - `return onRender(...)`
> - rename `qHook` => `qrl`
> - include captured vars in `qrl`
> - need linter which ensures that only `const` can be captured.
## Output
```typescript=
export const useCounter = () => {
return useState({count: 0});
}
// MISKO
// export const App = qComponent(qHook("#App_mount"));
export const App = qComponent(qrl("#App_mount"));
```
```typescript=
export {useCounter} from './input';
export const Mount = () => {
// MISKO: Delete as nothing captured
// const closure = qwik.useClosure();
const state = useCounter();
const thing = useState({thing: 0});
// MISKO
// closure.state = state;
// MISKO
// onRender(qHook("#App_render"));
onRender(qrl("#App_render", [state, thing]));
})
```
```typescript=
// MISKO
// export const Render = () => {
export const AppRender = () => {
// MISKO
// const closure = qwik.useClosure();
const [state, thing] = qwik.useLexcicalScope();
// MISKO
// const {state} = closure;
const count2 = state.count * 2;
// MISKO
// closure.count2 = count2;
return (
// MISKO
// <div on:click={qHook("#App_render_div_onclick")>
<div on:click={qrl("#App_render_div_onclick", [state, count2])>
<span>{state.count}</span>
{buttons.map(btn => { // expr needs to be transformed
// MISKO
// closure.btn = btn; // VALUE IS LOST
return (
<button
// MISKO
// on:click={qHook("#App_render_div_button_onclick")}
on:click={qrl("#App_render_div_button_onclick", [state, btn, thing])}
>
{btn.name}
<button>
);
})}
</div>
)
}
```
```typescript=
export const App_render_div_onclick = () => {
// MISKO
// const {state, count2} = qwik.useClosure();
const [state, count2] = qwik.useLexicalScope();
return (state.count+=count2);
}
```
```typescript=
export const App_render_div_button_onclick = () => {
// MISKO
// const {state, btn} = useClosure();
const [state, btn] = useLexcilScope();
state.count += btn.offset;
}
```