The core feature of React is that your UI is a pure function of your application state. In (e.g.) the Win32 UI, you would receive events, and then need to manually transition your current UI state to the new UI state (hide this button, disable this input, etc).
Similar idea was used on Oberon System 3 Gadgets toolkit.
Also java.util.Observable based on the same Smalltalk ideas was already part of Java 1.0.
This is markedly different than React, where the framework diffs the desired UI state (which is a pure function of your application state), and the actual UI state. The minimal number of UI operations necessary is then applied to make the latter match the former.
ImGui above works the same way, which makes it very popular for devtools in game development.
The source code of quite a few ones is available around the Net.