首页 > 解决方案 > MUI 选择 | 更改所选值在输入中的显示方式

问题描述

我有一个对象数组,我想绑定对象的多个属性,MenuItem但我只想显示一个要显示的属性Select

在此处输入图像描述

在上图中,它在选择显示中显示 10-xyz,它应该只显示 10。

const [age, setAge] = React.useState("");
  const [options, setOptions] = React.useState([
    {
      name: "xyz",
      age: "10"
    },
    { name: "xyz", age: "20" }
  ]);
  const handleChange = (event) => {
    setAge(event.target.value);
  };

  return (
    <Select
      labelId="demo-simple-select-label"
      id="demo-simple-select"
      value={age}
      label="Age"
      onChange={handleChange}
    >
      {options.map((ele) => {
        return(<MenuItem value={ele.age}>
          {`${ele.age}-${ele.name}`} 
        </MenuItem>)
      })}
    </Select>
  );
}

标签: javascripthtmlreactjsmaterial-ui

解决方案


使用renderValueprop 更改Select在组件中显示值的方式Input

<Select renderValue={(p) => p}

您的代码中还有 2 个问题:

  1. key您应该通过 aMenuItem来区分列表中的每一个。有关更多说明,请参阅此内容。

  2. 如果您想按照我的其他答案中的说明为您显示一个,则应该使用TextField而不是。SelectlabelSelect

我已经在下面的演示中解决了这两个问题。

如需参考,请参阅此处Select的API 。

Codesandbox 演示


推荐阅读