I am working on the interface with react. As soon as a button in the 'Buttons' area is clicked, the expression in the 'filter text input' must be used to query a REST interface which returns a list of items as JSON. This data must be passed to the lower left panel to update a tree view. The 'filter text input'+'Buttons' is a controlled input.
+-------------------------------------+
| +-------------------------+-------+ |
| | filter text input |Buttons| |
| +-------------------------+-------+ |
+----------+--------------------------+
| + item1 | +---------------+ |
| | +-... | | text input | |
| + item2 | +---------------+ |
| | +-... | +---------------+ |
| + item3 | | text input | |
| | +-... | +---------------+ |
| + item4 | |
| | +-... | ... |
+----------|--------------------------+
The canonical approach according to all the tutorials and documentation is to shift the state up to the common parent. However, this is a pretty bad idea because with every single key stroke the whole view will be updated entirely, including the tree in the left panel. Is there a generally accepted way (and good practice) to exchange data between components that belong to the same parent without shifting the state upwards or is there any other approach?