javascript - 如何避免 typescript-reactjs 中的 if 语句?

标签 javascript reactjs if-statement typescript porthole.js

我有不同类型的 Action 检查,它们执行不同的功能,只是我做了 if 和 else 条件来检查 Action 类型并执行相关功能,如下面的代码片段

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 的事件监听器。库(Porthole 是一个用于安全跨域 iFrame 通信的小型库。)我曾在我的 React 应用程序的 iframe 中进行通信

提前致谢

最佳答案

javascript 中的对象可以看作是一个关联数组,其中键是属性或函数的名称。

所以,你可以这样打电话:

this[messageEvent.data.action](messageEvent);

警告(如 Joe Clay 所述):使用此语法,对象 this 的每个函数都是可调用的,因此它可能导致“安全漏洞”,如果 this 包含您不想“公开”的功能。

关于javascript - 如何避免 typescript-reactjs 中的 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41502885/

相关文章:

javascript - 如何从生产汇总构建中删除 React PropTypes?

python - 如何循环一个乏味​​的 if 语句

java - 匹配的字符串不会在if else条件java中传递语句

javascript - 当尝试仅填充对 Angular 线时,二维数组总是填充整个数组

javascript - 如何使 casperjs 正确使用 ajax 进度表?

javascript - KnockoutJS 选项与重复值绑定(bind)

javascript - formdata POST 请求上出现网络错误 React Native

javascript - ReactJS Modal 通过 NPM 导入的 jquery 隐藏

javascript - 使用 jQuery 在本地系统中加载和解析 JSON 文件

c - if 语句选择了错误的条件