从 React 中的同一个选择下拉表单字段中获取多个值

Posted

技术标签:

【中文标题】从 React 中的同一个选择下拉表单字段中获取多个值【英文标题】:Get multiple values from the same select dropdown form field in React 【发布时间】:2020-07-09 17:02:55 【问题描述】:

我目前有一个带有选择下拉列表的 React Material 表单,我在其中映射一组对象并将名称字段显示为每个选项。我目前已将选项的 value 属性设置为对象的名称 (cpuParent.name)。但是,同一个对象也有一个瓦特字段(cpuParent.wattage),我也需要它的值。有没有办法可以从同一个下拉字段中获取对象的名称和功率?我在下面复制并粘贴了我的代码的相关 sn-ps - 该组件是一个类组件:

在类组件内,但在渲染方法之外:

constructor(props) 
    super(props);

    this.state = 
        calculator: 
            cpuParent: '',
            cpuChild: 0
        
    


handleChange = name => event => 
    this.setState(
        calculator: 
            ...this.state.calculator,
            [name]: event.target.value
        
    );
;

渲染方法内部:

// Destructure the state
const calculator: cpuParent, cpuChild = this.state;

// Destructure the props
const classes, cpuParents = this.props;

<FormControl className=classes.formControl>
    <NativeSelect
        value=cpuParent
        onChange=this.handleChange('cpuParent')
        inputProps='aria-label': 'CPU Parent'
    >
        <option value="">Select Brand</option>
        
            cpuParents.map(cpuParent => (
                <option key=cpuParent.id value=cpuParent.name>
                    cpuParent.name
                </option>
            ))
        
    </NativeSelect>
</FormControl>

【问题讨论】:

如果您将值设置为索引,您可以在句柄更改中按索引访问整个对象,如 cpuParents[parseInt(event.target.value)] 或在选项标签中使用自定义属性并从 event.target 获取它 【参考方案1】:

您不能同时获得名称和功率值,但它们是一个技巧: 您可以将名称和功率与选项值中的特定字符(如value=cpuParent.name + "_" + cpuParent.wattage )连接起来,并通过拆分来读取handleChange 事件函数中的值 让value = event.target.value.split('_')

【讨论】:

【参考方案2】:

您只需将选项值更改为整个对象即可获取整个对象

<option key=cpuParent.id value=cpuParent>
                    cpuParent.name
                </option>

现在标签将显示名称,但值将包含整个对象项。 您可以访问所需的任何值。

您可以使用

访问属性
  [name]: event.target.value['name']
  [name]: event.target.value['wattage']

【讨论】:

以上是关于从 React 中的同一个选择下拉表单字段中获取多个值的主要内容,如果未能解决你的问题,请参考以下文章

在下拉选择中,如何从数据库中填写完整的表单字段

根据另一个字段中的选择显示/隐藏 django 管理表单字段

Django 表单中的可编辑选择字段/下拉框

如何使用response从下拉选择中获取值?

如何根据 Django 下拉菜单中的选择显示和隐藏表单字段

根据下拉列表中的选定值显示表单字段Angular TypeScript