如何从 React 中选项标签的自定义属性中检索数据

Dav*_*ser 2 javascript reactjs

我有一个带有选择下拉列表的表单,其中包含通过循环对象构建的选项。每个选项都有一个关联的value属性和一个自定义属性data

我可以检索value就好了,但我无法访问该data属性。我尝试遵循此处找到的 JavaScript 模式但无济于事。返回的值为undefined

这是带有表单的组件:

import React from 'react';
import Option from './Option';

class AddmenuItemForm extends React.Component {
  createMenuItemTest(event) {
    event.preventDefault();

    const menuItem = {
      subsectionObjectId: this.subsectionObjectId.value,
      orderIndex: this.subsectionObjectId.selectedIndex.data,
    }

    this.props.addMenuItem(menuItem);

    this.menuItemForm.reset();
  }

  render() {
    const { subsections } = this.props;

    return (
      <div>
        <form ref={(input) => this.menuItemForm = input} onSubmit={(e) => this.createMenuItemTest(e)}>
          <select
            ref={(input) => this.subsectionObjectId = input}
            className="input mtm">
            {
              Object
                .keys(subsections)
                .map(key => <Option key={key} id={key} details={subsections[key]} />)
            }
          </select>

          <button type="submit">Add New</button>
        </form>
      </div>
    );
  }
};

export default AddmenuItemForm;
Run Code Online (Sandbox Code Playgroud)

这是 Option 组件:

import React from 'react';

class Option extends React.Component {
  render() {
    const { details } = this.props;
    const key = this.props.id;

    return (
      <option value={key} data={details.numberMenuItems}>
        {details.name}
      </option>
    )
  }
}

export default Option;
Run Code Online (Sandbox Code Playgroud)

呈现的 HTML 如下所示(<select>部分):

<select>
  <option value="KhEncads5F" data="11">Lunch</option>
  <option value="rxGeTpqSDF" data="2">Dinner</option>
</select>
Run Code Online (Sandbox Code Playgroud)

有没有办法检索所选<option>标签上的额外信息?

Dek*_*kel 6

使用refyou have 到您的DOM元素,您可以访问 和selectedOptions

this.subsectionObjectId.selectedOptions[0].getAttribute('data-items')
Run Code Online (Sandbox Code Playgroud)

检查这个工作示例:https :
//jsfiddle.net/1rmftx4z/