我有不同類型的動作檢查哪個做不同的功能,只是我做了,如果和其他條件檢查動作類型,並做了相關的功能,如下面的代碼片段如何避免typecript-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);
}
的有沒有更好的解決方案來處理這種情況下,因爲我有可能在未來有更多的行動,我必須一次又一次地改變代碼,我覺得這是低效的。
此onMessage
功能之間被用作事件偵聽porthole庫(舷窗是安全跨域的iFrame連通的小庫)。這在我以前在我的預先
由於通信
你的「明確」的方法是正常工作,但沒有填補這個「需要」:「我必須再來改變代碼再次,我覺得效率低下。「# –
@ ADreNaLiNe-DJ:它並沒有完全消除改變代碼的需要,但它減少了重複。我只是不喜歡用任意字符串索引到'this',它可能會導致微妙的錯誤。如果你想要走這條路線,最好是創建一個'this.eventHandlers'對象,而不是'this.eventHandlers [messageEvent.data.action](messageEvent)'。 –
我同意你的觀點,但在提交的代碼中沒有任何內容暗示除了被調用的回調函數和'onMessage'外,還有其他東西。但關於「安全」的「警告」是相關的。 –