> When I write real world code, ..., I write an event handler, which changes some data and then calls the parts of the UI that need an update.
That's your choice, and I'd argue you're creating messier code slower than someone who uses a UI framework that deals with reactivity in a principled manner. Having to synchronize the UI and data manually creates room for subtle desync errors which just can't happen in, say, Vue.