自动完成材料用户界面:当多个= {false}时,无法隐藏输入中的所选选项

时间:2020-10-20 08:57:24

标签: reactjs autocomplete material-ui

使用Child child = new Child("I am child"); Generic<Child> generic = new Generic<>(child); Master master = new Master(2, generic); Gson gson = new Gson(); String valMaster = gson.toJson(master); System.out.println(valMaster); // {"id":2,"generic":{"t":{"name":"I am child"}}} Master master2 = gson.fromJson(valMaster, Master.class); String valMaster2 = gson.toJson(master2); System.out.println(valMaster2); // {"id":2,"generic":{"t":{"name":"I am child"}}} ,我可以禁用在InputField中呈现选定的选项。这不适用于renderTags={() => null}。没有人有解决方案,并且知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我认为该道具专门用于multiple,您可以在此处查看Autocomplete的源代码:https://github.com/mui-org/material-ui/blob/9691ba77f3e27193c9cbff77ff85caaca22706b5/packages/material-ui/src/Autocomplete/Autocomplete.js

请注意以下条件声明。它检查multiple是否为truevalue.length > 0(另外检查value数组是否包含至少1个元素)。

尽管没有在文档中明确说明,但道具名称本身为“ renderTags”-这些是启用多重选择时看到的“标签”。

if (multiple && value.length > 0) {
  const getCustomizedTagProps = (params) => ({
    className: clsx(classes.tag, {
      [classes.tagSizeSmall]: size === 'small',
    }),
    disabled,
    ...getTagProps(params),
  });

  if (renderTags) {
    startAdornment = renderTags(value, getCustomizedTagProps);
  } else {
    startAdornment = value.map((option, index) => (
      <Chip
        label={getOptionLabel(option)}
        size={size}
        {...getCustomizedTagProps({ index })}
        {...ChipProps}
      />
    ));
  }
}

我不确定您为什么要在Autocomplete上隐藏选定的值,但是使用CSS可以为您做到这一点。