"拼接"而不是"过滤器"



我有一个输入标签的字段。也可以删除标签。我有一个问题。

我的删除代码如下。标签可以按任何顺序(第一个,最后一个,中间的某个位置,无关紧要)一次删除一个。

const deleteTag = (index) => {
setTags((prevState) => prevState.filter((tag, i) => i !== index));
};

但是我想用'splice'代替'filter'。具有相同的功能。告诉我该怎么做

Splice的第一个参数是项目索引,第二个参数是要从该索引中删除的项目数量。

const deleteTag = (index) => {
setTags((prevState) => {
prevState.splice(index, 1)
return [...prevState]
});
};

更新

如果您使用的是<StrictMode>, setState将执行两次,并将删除两个项目而不是一个。

最新更新