I haven't used React, but the approach you describe sounds very much like how early C++ UI toolkits worked. Applications would be built of "reusable, nested components", often called "widgets". The widgets would be placed into a hierarchy, with widgets often creating their ancestors. Widgets would have a paint() method that would take the widget's internal state and the state of the widget's container(s) into account when displaying (or updating a previous display) of the widget.
In general, no. You would typically take your widget, create it, and put it into a widget-agnostic container or layout manager. The widget wouldn't know about it's parent or children. The widgets would communicate by sending signals which bubbled up or down the container heirarchy, triggering repaints, resizes, and so on as needed.
- Pacabel