You call useState every day. You also follow an odd rule: the same useState calls, in the same order, on every render — never inside an if, never in a loop. You've accepted the rule. You've probably never been asked to explain it.
So let's take useState away. Over the next seven screens you'll rebuild it from nothing. Each screen hands you a tool you don't have yet and a job that tool can't do. What you invent to get past the wall turns out to be a piece of React — we won't name the textbook terms until the end.
Start with the crudest counter you can write. Stick let count = 0 at the top of your component function. Add a button that does count++ and another that asks React to run the function again. Tap. The number ticks up — satisfying. Now tap re-render. The function runs a second time. let count = 0 fires fresh. Your counter goes back to 0. Tap again. 0. The number refuses to stick. So where are you supposed to PUT it?
Tap count++ once or twice. The number ticks up. Now tap re-render. Watch the count go to 0. Do it again. Zero every time. The local let is reborn on every call.