javascript - 如何在材料 UI 中的自动完成之外删除选定的芯片
问题描述
所以我想在in<Chip />
之外显示选定的值。我能够将值显示为. 但是,我仍然无法删除这些芯片,即不仅显示,而且还更改了. 有人有想法吗?<TextField />
<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>
);
}
完整代码在这里
解决方案
你需要两件事:
- 中的适当逻辑,
onDelete
例如Chip
:
onDelete={() => {
setVal(val.filter(entry => entry !== option));
}}
- 在 上指定值(您已经在状态中管理)
Autocomplete
:
<Autocomplete
value={val}
// ... other properties
/>
这是您的沙盒的工作版本:https ://codesandbox.io/s/autocomplete-with-chips-85rqq
推荐阅读
- java - .getRowIndex(); 和 .getColumnIndex(); 在 Netbeans 的 JavaFX 中的 GridPane 类中没有显示为选项。我怎样才能解决这个问题?
- python - 使用 BeautifulSoup Python 单击按钮后获取价值
- android - Libgdx 绘制和打包精灵在 Android 上是黑色的
- excel - 是否可以使用 VBA 从活动单元格向下复制公式
- java - 如何使用 for 循环填充字符串数组
- html - 如何仅在第三行之后设置`text-overflow:省略号`?
- deflate - DEFLATE:动态块结构
- arrays - 使用 bash 将 SVG 图像导出到点
- php - 运行 php artisan migrate 后未创建数据库表
- firebase - 如何在聊天应用中使用 FCM 主题进行通知?