アラートを処理するアプリケーションのルートにコンポーネントがレンダリングされています。
私はどこでも私のアプリ内からそのコンポーネントに異なるメッセージを渡し、(受け入れるか、例えば拒否)、ユーザが選択したアクションを取得できるようにしたいです。
そのコンポーネントは他のコンポーネントの子ではないので、コールバックをプロップとして渡すことはできません。
は私が主な理由は、マークアップ組織のそれをレンダリングする必要があるすべてのコンポーネント上に「インスタンス」というコンポーネントを望んでいません。
これを達成するための良いパターンは何ですか?アボートコンポーネントからディスパッチする必要があるアクションを呼び出しアクション自体に渡す必要がありますか?Reduxを使用して、ルートのReactコンポーネントと他のアプリケーション間の通信方法を教えてください。
答えて
あなたがRedux
を使用している場合。オブジェクトを返すファンクションmapStateToProps
と、コンポーネントを格納するためのヘルパーファンクションconnectを使用するだけです。 components
は、Reduxストア内の状態が変更されたときに、自身の小道具として状態を受け取ります。すなわち、あなたがアクションを作用と減速は、されたコンポーネントは、それが(それ自体を考えて)のでが再度レンダリングされる接続(変更)ストア内の新しい値が返さ新しい小道具を受けました。
たとえば、あなた再来店(シングルトン)
{
alerts: [{
id: 1001,
message: "Hello",
userAct: "Accepted",
custType: "fromCompA",
},
{
id: 1002,
message: "World",
userAct: "Declined"
custType: "fromCompB",
cb: function(){}
}],
others: {},
}
mapStateToProps
const mapStateToProps = state => {
return {
alerts: state.alerts || []
}
}
は
export default connect(mapStateToProps, {
addAlert,
})(YourComponent)
を接続しています
あなたはどのコンポーネントがそれを呼び出しに応じて異なるアクションを実行する場合
UPDATE、あなたはあなたの店のオブジェクトにcustom type
またはコールバックを追加することができます。
は、その後、あなたは、このようなカスタムタイプのアクションの作成者を使用することができます
const addAlert = (paramIsObjContainsCustType, param2, custType) => (
{
type: "YOUR_ACTION_TYPE",
payload: {
message: param2,
custType,
}
)
(あなたはのparamオブジェクトにcustTypeを置くことができ、すべての。あなたの設計に依存)そして、あなたのコンポーネントが警告オブジェクトを取得することができますし、 object.custType(この例では)。それで、あなたはその価値に応じて何かをすることができます。以下@aziumのコメント投稿者
、コールバックの方法は、タイムトラベルのような再来のいくつかの機能を逃すことがあります。したがって、店舗にcustType
のようなメタデータを残して、それに応じて反応させることが、あなたが望むことを行うためのより良い方法になるはずです。私たちは店をシリアル化したいとき
や店舗での機能を維持するにもいくつかの問題が発生することがあります。シリアル化を行うと、関数はnull
になる可能性があります。
しかし、
@aiman **店舗の**アラート**にタイプまたはコールバック関数を追加できます。私のReduxストアの例をもう一度調べることができます。 –
私は店舗にコールバック機能を置くことは疑わしいアプローチだと思います。私は、最初のコンポーネント(id、アクションタイプ)の呼び出し元に関するいくつかのメタデータを保存し、ジェネリックコールバックを持って次のアクションを実行することを賢明に思う/何か行動的なものを行う – azium
- 1. 2つのAIR IOSアプリケーション間の通信方法を教えてください。
- 2. Reactでステートレスコンポーネントと通信する方法を教えてください。
- 3. マットダイアログが実装されているコンポーネントとマットダイアログコンポーネントとの通信方法を教えてください。
- 4. mobx + react + uiコンポーネントの操作方法を教えてください。
- 5. 電子メール:ブラウザウィンドウとの通信方法を教えてください。
- 6. 他のjsモジュールからredux-reactアプリケーションと通信する正しい方法
- 7. MaterialUIとReduxを使用して、TextFieldの変更を状態にする方法を教えてください。
- 8. 通知カテゴリの登録方法を教えてください。
- 9. chrome.tabs.onUpdated.addListenerの使用方法を教えてください。
- 10. generate_eventsイベントの使用方法を教えてください。
- 11. GridLayoutの使用方法を教えてください。
- 12. Android GPUの使用方法を教えてください。
- 13. Microsoft VSTOインターフェイスの使用方法を教えてください。
- 14. Amazon Echo Lookの使用方法を教えてください。
- 15. org.mockito.AdditionalMatchers.gtの使用方法を教えてください。
- 16. jqm.page.params.jsプラグインの使用方法を教えてください。
- 17. F#Reflectionライブラリの使用方法を教えてください。
- 18. ページファンの国別配信方法を教えてください。
- 19. Springアプリケーションの実行方法を教えてください。
- 20. redisデータベース間の変更方法を教えてください。
- 21. mapDispatchTo react-redux 'connect()とクラスコンポーネントを使用してください。
- 22. EventMachineを使用してCtrl + Cと通常のバインドを区別する方法を教えてください。
- 23. VOB(Clearcase UCM)を使用しないコンポーネントの使用方法を教えてください。
- 24. 画像とテキストを送信して他のアプリに共有する方法を教えてください
- 25. タイル間の隙間を取り除く方法を教えてください。
- 26. React:別のコンポーネントからコンポーネントにアクセスする方法を教えてください。
- 27. Laravel ProjectにすべてのルートでHTTPSを使用させる方法を教えてください。
- 28. State Machine Completionについての通知方法を教えてください。
- 29. Tensorflowとnumpydocでのintersphinxの使用方法を教えてください。
- 30. Swingアプリケーションに触れる方法を教えてください。
あなたのプロジェクトではreduxを使用していますか? – FurkanO
私はあなたの質問を理解していません。おそらくあなたのreduxストアには、あなたのアラートに渡す情報が含まれているし、あなたのアプリをどこにでもあなたのアラートをレンダリングするあなたの店にデータをディスパッチすることができます。これは何らかの形では不十分ですか? – azium
@aziumコンポーネントからアラートコンポーネントへの通信は確かに可能です。しかし、ユーザーがそのアラートからオプションを選択した場合、次のアクションを実行する必要があるコンポーネントにその応答をどのように送り返すことができますか? – airnan