材质 UI 自动完成

Posted

技术标签:

【中文标题】材质 UI 自动完成【英文标题】:Material UI Autocomplete 【发布时间】:2020-04-09 08:55:06 【问题描述】:

我正在使用 Material UI 的自动完成功能构建一个表单。该字段呈现芯片,但是我无法修改芯片组件的 onDelete 属性。我曾尝试修改其他道具,例如变体、标签等,但即使尝试让 onDelete 道具做一个简单的控制台日志也不起作用。我的代码如下。

        <Autocomplete
      onChange=handleRecChange("foodRecs")
      multiple
      options=menuItems
      renderTags=(value, getTagProps) =>
        value.map((option, index) => (
          <Chip
            variant="outlined"
            key=option
            label=option
            onDelete=() => console.log("test")
            ...getTagProps( index )
          />
        ))
      
      renderInput=params => (
        <TextField
          ...params
          variant="standard"
          label="Recommendations"
          placeholder="Choose anything from the menu"
          fullWidth
        />
      )
    />

【问题讨论】:

你如何捕捉用户的选择?我无法弄清楚如何访问自动完成的实际选定值... 【参考方案1】:

那是因为你在这一行覆盖了onDelete

...getTagProps( index )

getTagProps 是标签道具的吸气剂。它包括onDelete 函数,因为onDeleteChip 属性(您可以打印getTagProps 返回值来查看)。 您应该将getTagProps 放在第一行,以避免不必要的道具覆盖:

  <Chip
    ...getTagProps( index )
    variant="outlined"
    key=option
    label=option
    onDelete=() => console.log("test")
  />

【讨论】:

以上是关于材质 UI 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

材质 UI 自动完成标签动画不起作用

仅使用 getOptionLabel 字段进行材质自动完成过滤

如何使材料 UI 的自动完成字段成为必需?

样式/更改 Material UI React 中的自动完成关闭图标

材质自动完成不适用于 InputProps

将角度/材质包更新到最新版本后,角度材质自动完成组件不显示项目