私は異なる機能を行うアクションチェックの異なる種類を持って、単に私はアクションの種類を確認し、以下のコードスニペットtypescript-reactjsのif文を避けるには?
public onMessage = (messageEvent) => {
if (messageEvent.data.action === 'subscribeTriggers') {
this.subscribeTriggers(messageEvent);
} else if (messageEvent.data.action === 'setGlobalFilters') {
this.setGlobalFilters(messageEvent);
} else if (messageEvent.data.action === 'getGlobalFilters') {
this.receiveGlobalFilters(messageEvent);
} else if (messageEvent.data.action === 'initFromGlobalFilters') {
this.initFromGlobalFilters(messageEvent);
}
のような関連する機能を実行するためにifとelse条件を作っ処理するためのよりよい解決策がありますこの種のシナリオは、私が来なければならない将来、コードを何度も何度も変更しなければならない、より多くの行動をとる可能性があるため、私はそれが非効率的だと感じました。このonMessage
機能との
は私が事前
でのアプリのIFRAME感謝を反応させ、私の中での通信に使用するportholeライブラリ(舷窓は、安全なクロスドメインのiFrameの通信のための小さなライブラリである。)のイベントリスナーとして使用されています
あなたの「明示的な」アプローチはうまくいっていますが、この「必要性」を満たしません。 –
@ ADreNaLiNe-DJ:コードを変更する必要性を完全に排除するわけではありませんが、繰り返しを減らすことができます。私はちょうど、任意の文字列で 'this'を索引付けするファンではなく、微妙なバグを引き起こす可能性があります。そのルートに行きたい場合は、 'this.eventHandlers'オブジェクトを作成し、this.eventHandlers [messageEvent.data.action](messageEvent)'を実行する方が良いでしょう。 –
私はあなたに同意しますが、提出されたコードでは、コールバックと 'onMessage'以外の何かがあることを暗示しています。しかし、「安全保障」に関する「警告」は意味がある。 –