Якщо цей самий сценарій не розповсюджений скрізь, ви можете використовувати контекст React, особливо якщо ви не хочете ввести всі накладні витрати, які вводять бібліотеки управління державою. Плюс до цього простіше вчитися. Але будьте обережні, ви можете цим перенапружитись і почати писати поганий код. В основному ви визначаєте компонент Container (який буде містити та зберігати цей фрагмент стану для вас), роблячи всі компоненти, зацікавлені в написанні / читанні цієї частини даних її дітям (не обов'язково направляти дітей)
https://reactjs.org/docs/context.html
Ви також можете замість цього використати звичайний React.
<Component5 onSomethingHappenedIn5={this.props.doSomethingAbout5} />
передайте doSomething About5 до компонента 1
<Component1>
<Component2 onSomethingHappenedIn5={somethingAbout5 => this.setState({somethingAbout5})}/>
<Component5 propThatDependsOn5={this.state.somethingAbout5}/>
<Component1/>
Якщо це поширена проблема, ви повинні почати думати про переміщення всього стану програми на інше місце. У вас є кілька варіантів, найпоширеніші:
https://redux.js.org/
https://facebook.github.io/flux/
В основному, замість того, щоб керувати станом програми у своєму компоненті, ви надсилаєте команди, коли щось відбувається, щоб оновити стан. Компоненти також витягують стан із цього контейнера, тому всі дані централізовано. Це не означає, що більше не можна використовувати локальний стан, але це більш розвинена тема.