timerComponent = render(({ useSetter }) => {
const [runningState, setRunningState] = useState(null);
const [counter, setCounter] = useState(0);
useEffect(() => {
if (runningState === 'running') {
requestAnimationFrame(() => setCounter(counter + 1));
}
});
useSetter(counter);
return jsx`
<span>
<button
name="start"
disabled=${runningState === 'running'}
onClick=${event => setRunningState('running')}>
Start
</button>
<button
name="stop"
disabled=${runningState !== 'running'}
onClick=${event => setRunningState('stopped')}
>Stop</button>
<button
name="reset"
disabled=${runningState == null}
onClick=${event => {
setRunningState(null);
setCounter(0);
}}
>Reset</button>
</span>
`
})