Define components as pure state machines.
https://stateful-component.vercel.app/
The initial state to use.
Accepts state as an argument, returns a modified form or null
(to stop transition).
Renders a component as a function of state.
/**
* This component increases as you press a button.
*/
<StatefulComponent initialState={{ count: 0 }}>
{({ count, updateState }) => (
<div>
<button
className="rounded-lg m-4 border-2 p-2"
onClick={() => updateState({ count: count + 1 })}
>
Click me
</button>
<p>
Count: <strong>{count}</strong>
</p>
</div>
)}
</StatefulComponent>