reactjs - MUI Select 组件中的自定义文本

标签 reactjs material-ui

我在 React 应用程序中使用 MUI Select,用户可以从列表中选择一个选项。但是,要求用户可以在 MUI Select 中添加自定义文本来创建新选项。

任何人都可以帮助如何实现同样的目标。在 MUI Select 组件中添加自定义文本。

最佳答案

使用 Select 不可能做到这一点,但您可以使用 Autocomplete 组件来做到这一点。方法如下:

  • 控制输入值和选项
  • 检测用户是否按下了Enter,并在选项列表中添加新选项

示例

const initialOptions = [
  { title: "The Shawshank Redemption" },
  { title: "The Godfather" },
  { title: "The Godfather: Part II" }
];
function App() {
  const [inputValue, setInputValue] = React.useState("");
  const [options, setOptions] = React.useState(initialOptions);

  return (
    <Autocomplete
      options={options}
      noOptionsText="Enter to create a new option"
      getOptionLabel={(option) => option.title}
      onInputChange={(e, newValue) => {
        setInputValue(newValue);
      }}
      renderInput={(params) => (
        <TextField
          {...params}
          label="Select"
          variant="outlined"
          onKeyDown={(e) => {
            if (
              e.key === "Enter" &&
              options.findIndex((o) => o.title === inputValue) === -1
            ) {
              setOptions((o) => o.concat({ title: inputValue }));
            }
          }}
        />
      )}
    />
  );
}

现场演示

Edit 66749678/custom-text-in-mui-select-component

关于reactjs - MUI Select 组件中的自定义文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66749678/

相关文章:

reactjs - 如何使用 material-ui 网格系统将 5 个项目均匀地组织成一行?

javascript - ReactJS 和 Material-UI : How to highlight just content inside Material-UI's <Dialog> and not the whole page?

reactjs - onTouchTap 使用 Material-ui 对话框触发两次

javascript - 可以从 redux-toolkit 中的另一个 Action 调度 slice 的 Action 吗?

javascript - 插入状态数组的正确方法

reactjs - 这个应用程序中的 useObserver 和观察者有什么区别?

javascript - react / react Hook : Need to run a function onLoad within React Hooks component

javascript - react : Passing an object to state

javascript - 在 onChange (ReactJS) 中获取 2 个组合日期选择器的值

reactjs - 在 MaterialUI Grid 中使用表单