【发布时间】:2019-12-29 19:50:42
【问题描述】:
我按照这里的 Chips 示例,为了将芯片渲染为 Select 的 renderValue:
https://material-ui.com/components/selects/
但是,当我在芯片上添加onDelete时,为了一键删除芯片,我可以看到关闭图标,但是没有调用删除事件(因为选择的菜单显示)。
<Select
multiple
value={selectedProducts}
onChange={handleProductsSearchChange}
renderValue={selected => (
<div className={classes.chips}>
{selected.map(value => (
<Chip key={value} label={find(FAKE_PRODUCTS, {id: value}).name}
onDelete={() => handleDeleteSearchProduct(value)}
className={classes.chip} />
))}
</div>)}
MenuProps={{ PaperProps: {
style: {
maxHeight: 48 * 4.5 + 8,
width: 250,
}
}
}}
>
{menuItems}
</Select>
当我将芯片放在选择之外时,会调用删除事件。 你认为我能做些什么来防止菜单在点击时打开的行为?
非常感谢!
【问题讨论】:
-
选择点击处理程序是否具有直接与芯片删除行为相矛盾的功能?
-
我不知道..似乎在单击删除图标时,菜单会捕获单击事件并忽略它,并且只打开选择菜单。
-
这很奇怪,它完全忽略了点击。通常问题是芯片上的点击处理程序会触发,但选择菜单也会触发。 developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation 很容易解决这个问题
-
没错,我知道如何处理两个组件都捕获事件的情况。但似乎菜单阻止了点击操作