Wenn dasselbe Szenario nicht überall verbreitet ist, können Sie den Kontext von React verwenden, insbesondere wenn Sie nicht den gesamten Overhead einführen möchten, den Statusverwaltungsbibliotheken verursachen. Außerdem ist es einfacher zu lernen. Aber seien Sie vorsichtig, Sie könnten es überbeanspruchen und anfangen, schlechten Code zu schreiben. Grundsätzlich definieren Sie eine Containerkomponente (die diesen Status für Sie speichert und beibehält), sodass alle Komponenten, die daran interessiert sind, dieses Datenelement zu schreiben / lesen, ihre untergeordneten Elemente sind (nicht unbedingt direkte untergeordnete Elemente).
https://reactjs.org/docs/context.html
Sie können stattdessen auch einfach React richtig verwenden.
<Component5 onSomethingHappenedIn5={this.props.doSomethingAbout5} />
Übergeben Sie doSomethingAbout5 an Komponente 1
<Component1>
<Component2 onSomethingHappenedIn5={somethingAbout5 => this.setState({somethingAbout5})}/>
<Component5 propThatDependsOn5={this.state.somethingAbout5}/>
<Component1/>
Wenn dies ein häufiges Problem ist, sollten Sie darüber nachdenken, den gesamten Status der Anwendung an einen anderen Ort zu verschieben. Sie haben einige Optionen, die häufigsten sind:
https://redux.js.org/
https://facebook.github.io/flux/
Anstatt den Anwendungsstatus in Ihrer Komponente zu verwalten, senden Sie grundsätzlich Befehle, wenn etwas passiert, um den Status zu aktualisieren. Komponenten ziehen den Status auch aus diesem Container, sodass alle Daten zentralisiert werden. Dies bedeutet nicht, dass der lokale Status nicht mehr verwendet werden kann, aber das ist ein fortgeschritteneres Thema.