0

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

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

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>
4

2 回答 2

1

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

于 2020-03-29T08:36:29.167 回答
1

您可以获得整个对象只需将您的选项值更改为整个对象

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

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

您可以使用访问属性

  [name]: event.target.value['name']
  [name]: event.target.value['wattage']
于 2020-03-29T08:43:32.283 回答