【问题标题】:Use ENUMS dynamically for option TAG in SELECT (REACTJS)为 SELECT (REACTJS) 中的选项 TAG 动态使用 ENUMS
【发布时间】:2020-02-25 02:17:58
【问题描述】:

我有如下所列的枚举

export declare enum UserStatus {
    NEW = "NEW",
    REGISTERED = "REGISTERED"
}

我如何确保我可以使用这种动态方式作为选择标签的下拉项。我在网上搜索了几个网站,没有找到合适的答案。有人可以帮忙吗?

目前我正在以这种方式进行硬编码。

<select value={selectedUserStatus} onChange={onUserStatusSelect}>
      <option
        aria-selected="true"
        key={UserStatus.NEW}
        value={UserStatus.NEW}
      >
        {UserStatus.NEW}
      </option>
      <option
        aria-selected="true"
        key={UserStatus.REGISTERED}
        value={UserStatus.REGISTERED}
      >
        {UserStatus.REGISTERED}
      </option>
    </select>

【问题讨论】:

    标签: javascript arrays json reactjs html-select


    【解决方案1】:

    你也可以使用:

    <select value={selectedUserStatus} onChange={onUserStatusSelect}>
        Object.values(UserStatus).map(value =>
            <option
                aria-selected="true"
                key={value]}
                value={value}
            >
                {value}
            </option>
        )
    </select>
    

    【讨论】:

    • 我相信你需要像这样在 JSX 中的标记周围加上括号,否则你会得到一个关于错误 LHS 参数的语法错误。
    • 不,在这种特殊情况下我没有
    【解决方案2】:

    如果是 JSX 语法,您应该能够将元素内部的标记替换为 JSX 元素数组,如下所示:

    <select value={selectedUserStatus} onChange={onUserStatusSelect}>
        Object.keys(UserStatus).map(key => (
            <option
                aria-selected="true"
                key={UserStatus[key]}
                value={UserStatus[key]}
            >
                {UserStatus[key]}
            </option>
            )
        )
    </select>
    

    【讨论】:

    • 这个解决方案对您有用吗?我通常在 Vue.js 的上下文中使用 jsx,所以我不完全确定这在 React 中是否有效
    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多