【发布时间】:2019-12-27 07:47:39
【问题描述】:
我有一个输入文本框。 enter 上的值将填充为下面的标签。根据索引删除标签时,不会按预期删除。关闭单个标签时会删除多个标签。
链接 [codesandbox]:https://codesandbox.io/s/tender-chebyshev-iek41
class App extends React.Component{
state={
text:[],
tags:[]
};
handleSearch = (value) => {
const tagsMap = [...this.state.tags];
tagsMap.push(`${value}`.trim());
this.setState({text:value,tags:tagsMap},()=>console.log(this.state.text))
}
onCloseTag = (key) => {
console.log('Closed', key);
this.setState({
tags: this.state.tags.filter((_, index) => index !== key)
});
}
render(){
const { tags } = this.state;
return (
<div className="App">
<h2>Start editing to see some magic happen!</h2>
<Search
placeholder="input search text"
onSearch={(value)=>this.handleSearch(value)}
style={{ width: 200 }}
/><br/>
{tags.map((tag,i) => <Tag key={i} closable onClose={() => this.onCloseTag(i)} color="#f50">{tag}</Tag> )}
</div>
);
}
}
预期:在关闭该特定标签时删除一个标签
实际:关闭时删除多个标签
【问题讨论】:
-
切勿将索引用于此类操作。而是创建对象的 Id 并使用它来删除项目