【发布时间】:2019-09-24 13:28:22
【问题描述】:
我现在在使用 Material-UI 芯片组件时遇到一个小问题。我有一个包含用户列表的选择。当你选择一个用户时,一个带有他号码的芯片会出现在表格的正下方。一切正常,但芯片正在覆盖,而不是添加新的。这是我的代码:
import React from 'react';
import Chip from '@material-ui/core/Chip';
export default function Test(){
const [chipData, setChipData] = React.useState([]);
const userArray = [
{key: 1, label: name1},
{kel: 2, label: name2}
];
const [userValue, setUserValue] = React.useState('');
// This come from the select form onChange
const handleSelect = (e) => {
setUserValue(e.target.value);
setChipData([...chipData, {key: e.target.value, label: e.target.value}]);
}
const handleDelete = chipToDelete => () => {
setChipData(chips => chips.filter(chips => chips.key !== chipToDelete.key));
}
return(
<div>
<TextField
select
value={userValue}
onChange={e => handleSelect(e)}
>
{userArray.map(option => (
<MenuItem key={option.key} value={option.label}>
{option.label}
</MenuItem>
))}
</TextField>
{chipData.map(data => {
return(
<Chip
key={data.key}
label={data.label}
onDelete={handleDelete(data)}
/>
);
})}
</div>
);
}
我尝试使用类似chipData.push({data...}) 的东西,效果很好,但如果我删除其中任何一个,则不允许我添加更多项目。使用上面的代码,芯片只是覆盖了之前点击的那个,而不是添加到数组中。
【问题讨论】:
-
看看这个codesandbox,我不知道你是如何创建芯片组件的,你有删除芯片的关闭图标吗?请发布用于渲染选择的代码。
-
问题已更新为邮政编码。芯片不像代码沙盒那样在选择内。试图弄清楚如何做到这一点,但我做不到。芯片仍然覆盖而不是添加。
标签: reactjs material-ui