我有不同类型的动作检查哪个做不同的功能,只是我做了,如果和其他条件检查动作类型,并做了相关的功能,如下面的代码片段如何避免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'外,还有其他东西。但关于“安全”的“警告”是相关的。 –