Angularでは、祖先に通知するために$ scope。$ emitメソッドを使用できます。どのようにして同じことをReactで行うことができますか?
0
A
答えて
0
些細な解決策は、親から子へのコールバックを孫などに渡すことです。降下がコールバックを呼び出すと、それは親のコンテキストで実行されます。
class Parent extends React.Component {
constructor() {
this.click = this.click.bind(this); // bind the handler to this
}
click(view) {
this.setState({ view }); // change the state
}
render() {
return <Child clickHandler={ this.click } />; // pass CB to child
}
}
class Child extends React.Component {
render() {
return <GrandChild clickHandler={ this.props.clickHandler } />; // pass CB to grandChild
}
}
class GrandChild extends React.Component {
render() {
return <button onClick={() => this.props.clickHandler('nextViewId') }>Click</button>; // invoke CB on click
}
}
問題は、コンポーネントの大きな木を持っている場合、あなたは複数のレベルに複数のコールバックを転送する必要がありますということです。つまり、すべてのコンテナに複数のプロパティを持たせることができ、CBを通過させるだけで、テストとメンテナンスが非常に難しくなります。小さなアプリケーションにはこのソリューションを使用してください。
大規模なアプリケーションの場合は、reduxなどのFluxアーキテクチャを使用する必要があります。大まかなアイデアは、すべてのアクションが起動コンポーネントによってディスパッチされ、メインストアによって処理され、新しいモデルを作成し、それをコンポーネントツリーのルートに転送することです。このようにして、すべてのコンポーネントは必要なすべてのデータを取得し、それを処理できます。これは、ルートへのAngularの$ブロードキャストの使用のようなものです。
関連する問題
- 1. ANGULAR JSとReact
- 2. Angular JSでemitとbroadcastを使用するタイミングは?
- 3. Vue、React、Angular、BootstrapのようなJavaScriptフレームワークの違いは何ですか?
- 4. Angular 1の$ emitなどの "ローディング"コンポーネントのグローバルな動作をトリガーする
- 5. Reactアプリケーションのためのreact-perfのようなAngular 4 Performanceツールはありますか?
- 6. テストイベントの角$ emitと$
- 7. PyQt emit()とpyqtSignal()の適切な使用
- 8. React-router V4の各パッケージ(react-router-domとreact-router-websiteのような)の違い
- 9. Angular 2とReactの診断機能
- 10. Angular 1対React
- 11. ワールド軸とローカル軸
- 12. WPFの2Dワールド
- 13. JavaワールドのCQRS
- 14. vue jsで$ emit(\ 'remove \')とは
- 15. ワールド/カントリーマップのプロットデータ
- 16. React、Ember、Angular、およびPolymerライブラリの違いは何ですか?
- 17. Emit javascriptデバッガ。スクリプトシャープより
- 18. 子供のコンポーネントEventEmitterからのemitメソッドのリッスンを開始および終了できますか?Angular 2?
- 19. IL Emit - プロパティのリダイレクト
- 20. react-transform-catch-errorsがReactコンポーネントのように見えない
- 21. javaワールド用語
- 22. Netlogoワールド座標
- 23. ユニットテストスパイon $ emit
- 24. MongoDB MapReduce Emit Strangeness
- 25. 私はReactのように聞いたのでReactをあなたのReactネイティブに入れます
- 26. Emit Win32Icon with Roslyn
- 27. ng-routerでbroadcastとemitが動作しないのですか?
- 28. AngularとTypeScriptでAngularJSのグローバルな 'angular'変数にアクセスするにはどうすればよいですか?
- 29. React Native - Whatsappのようなアニメーションがうまくいかない
- 30. React-Native、comboBoxのように
祖先のクラスに属する特定のライフサイクルイベントまたは関数をトリガーしようとしていますか? – Noitidart
はい。私は深い眺望の木があると想像してください。 1つのリーフノードにボタンがあります。このボタンをクリックすると、新しいビューに切り替えるためにルートビューが必要になります。 – Pylipala
私は放出のようなものはないと思います。リアクションは非常に異なった考え方です。状態はボタンに達するまで、これらの先祖を通過する必要があります。したがって、そのビューのコントロールする祖先では、新しい状態が表示され、ビューが切り替わります。これが私の考えです。 – Noitidart