The core idea is to always use the ctx to attach handlers. This will enable EVT to detach/reload handlers when they need to be namely when the component is unmounted or a value used in a handler has changed.
useRerenderOnStateChange()
import { useState } from "react";
import { Evt } from "evt";
import { useRerenderOnStateChange } from "evt/hooks";
const evtTickCount = Evt.create(0);
setInterval(()=> evtTickCount.state++, 1000);
function App(){
useRerenderOnStateChange(evtTickCount);
return <h1>tick count: {evtTickCount.state}</h1>;
}