如何使用data- *属性设置打字稿枚举?

所以我有一个像这样的枚举:

enum AppMode {
    MAIN = 'MAIN',CALENDAR = 'CALENDAR',WITnesSES = 'WITnesSES',EXHIBITS = 'EXHIBITS'
};

我有一个带有四个按钮的React组件,它们的单击事件均由相同的函数处理,如下所示:

<button type="button" classname="NavLink" data-appMode={ AppMode.MAIN } onClick={ this.handleAppModeclick.bind(this) }>Main</button>
<button type="button" classname="NavLink" data-appMode={ AppMode.CALENDAR } onClick={ this.handleAppModeclick.bind(this) }>Hearings Calendar</button>
<button type="button" classname="NavLink" data-appMode={ AppMode.WITnesSES } onClick={ this.handleAppModeclick.bind(this) }>Witnesses</button>
<button type="button" classname="NavLink" data-appMode={ AppMode.EXHIBITS } onClick={ this.handleAppModeclick.bind(this) }>Exhibits</button>

请注意,data-appMode属性由枚举值设置。这是处理函数:

handleAppModeclick(e: React.MouseEvent<HTMLButtonElement>) {
   let attr: string | null = (e.target as HTMLButtonElement).getattribute("data-appMode");
   let result: AppMode = AppMode.MAIN;
   if (attr !== null) {
      result = AppMode[attr];
   }
   this.props.setappMode(AppMode[result]);
}

但是,这行:result = AppMode [attr];生成以下错误:元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型“ typeof AppMode”。   在“ typeof AppMode” .ts(7053)上找不到带有“字符串”类型参数的索引签名。

那么有没有一种方法可以使用data- *属性将结果变量的值设置为枚举的值,而不必经过一堆if语句?

tammyluxiuliang 回答:如何使用data- *属性设置打字稿枚举?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3164452.html

大家都在问