javascript - 在 ReactJS 中状态更新和删除后 DOM 不会删除项目
问题描述
我一直很困惑为什么一个项目 -card
在删除和状态更新后不会从 DOM 中消失。我的编辑功能工作正常,并且我的代码因拼写错误和错误的变量等而变质。
这是我的 App(顶级组件)状态对象:
state = {
decks: [],
cards: [],
selectedCards: [],
selectedDecks: [],
currentUser: null,
users: []
}
我在 App 中的 Delete 函数(乐观)被传递给deckLayout
组件:
deleteCard = (cardId, deckId) => {
const cardCopy = this.state.cards.slice()
const foundOldCardIdx = cardCopy.findIndex(card => card.id === cardId)
cardCopy.splice(foundOldCardIdx, 1)
this.setState({
cards: cardCopy
}, console.log(this.state.cards, cardCopy))
this.filterCards(deckId)
console.log(this.state.cards)
fetch(`http://localhost:9000/api/v1/cards/${cardId}`, {
method: 'DELETE'
})
};
这是一个filterCards
在删除和状态更新后调用的函数(这适用于编辑):
filterCards = (deckId) => {
if (this.state.cards.length === 0) {
alert('No cards yet!')
} else {
const filteredCards = this.state.cards.filter(card => card.deck_id === deckId)
this.setState({
selectedCards: filteredCards
})
this.filterDecks()
}
};
然后调用一个filterDecks
函数:
filterDecks = () => {
if (this.state.currentUser) {
const filteredDecks = this.state.decks.filter(deck => {
return deck.user_id === this.state.currentUser.id
})
this.setState({
selectedDecks: filteredDecks
})
} else {
alert('Login or sign up')
}
};
解决方案
推荐阅读
- c++ - 在 linux 中构建 VS 2019 失败并给出“错误 \Linux.targets(514,5): 错误:发生了一个或多个错误”但没有解释任何事情
- python - 用掩码为真的另一个张量填充张量
- php - 将一张图像放入单元格 (Excel) 中而不会溢出 Phpspreadsheet
- bash - 变量可以在 Bash 中的参数内部传递吗
- neo4j - 运行 BFS Neo4j 时如何指定最大成本?
- javascript - 如果 ionic3/5 中带有感叹号的 wifi 不会触发网络 onchange 事件
- rebol - 用 Rebol 编写的 Tracer 函数
- c# - 无法使用 RsaCryptoServiceProvider 导出 RSA 参数
- tfs - TFS 2015-使用不同配置重复测试用例-看不到配置选项
- amazon-s3 - 如何正确配置带有 S3/Minio 的 Gitlab Runners 作为分布式缓存?