# `useRafLoop`
This hook call given function within the RAF loop without re-rendering parent component.
Loop stops automatically on component unmount.
Additionally hook provides methods to start/stop loop and check current state.
## Usage
```jsx
import * as React from 'react';
import { useRafLoop, useUpdate } from 'react-use';
const Demo = () => {
const [ticks, setTicks] = React.useState(0);
const [lastCall, setLastCall] = React.useState(0);
const update = useUpdate();
const [loopStop, loopStart, isActive] = useRafLoop((time) => {
setTicks(ticks => ticks + 1);
setLastCall(time);
});
return (
RAF triggered: {ticks} (times)
Last high res timestamp: {lastCall}
);
};
```
## Reference
```ts
const [stopLoop, startLoop, isActive] = useRafLoop(callback: FrameRequestCallback, initiallyActive = true);
```
* **`callback`**_: `(time: number)=>void`_ — function to call each RAF tick.
* **`time`**_: `number`_ — DOMHighResTimeStamp, which indicates the current time (based on the number of milliseconds since time origin).
* **`initiallyActive`**_: `boolean`_ — whether loop should be started at initial render.
* Return
* **`stopLoop`**_: `()=>void`_ — stop loop if it is active.
* **`startLoop`**_: `()=>void`_ — start loop if it was inactive.
* **`isActive`**_: `()=>boolean`_ — _true_ if loop is active.