如何在材质 UI 中删除自动完成之外的选定芯片

use*_*470 3 javascript autocomplete multi-select reactjs material-ui

所以我想<Chip /><TextField />in之外显示选定的值<Autocomplete />。我能够将值显示为state. 不过,我还是无法删除那些芯片,即不只是显示器,而且还改变了selected控制的属性<Autocomplete />。有没有人有想法?

  const [val, setVal] = useState([]);

  const valHtml = val.map((option, index) => (
    <Chip
      label={option.title}
      deleteIcon={<RemoveIcon />}
      onDelete={() => {}}
    />
  ));

  return (
    <div>
      <Autocomplete
        multiple
        filterSelectedOptions
        options={top100Films}
        onChange={(e, newValue) => setVal(newValue)}
        getOptionLabel={option => option.title}
        renderTags={() => {}}
        renderInput={params => (
          <TextField
            {...params}
            variant="standard"
            placeholder="Favorites"
            margin="normal"
            fullWidth
          />
        )}
      />
      <div className="selectedTags">{valHtml}</div>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

完整代码在这里

Rya*_*ell 6

你需要两件事:

  1. 适当的逻辑在onDelete所述的Chip如:
      onDelete={() => {
        setVal(val.filter(entry => entry !== option));
      }}
Run Code Online (Sandbox Code Playgroud)
  1. 在 上指定值(您已经在状态中管理)Autocomplete
      <Autocomplete
        value={val}
        // ... other properties
      />
Run Code Online (Sandbox Code Playgroud)

这是您的沙箱的工作版本:https : //codesandbox.io/s/autocomplete-with-chips-85rqq