【问题标题】:Why every tweet is being deleted为什么每条推文都被删除
【发布时间】:2022-01-02 08:27:25
【问题描述】:

所以我使用 React 并编写了一个带有提交按钮的文本框的小代码,当输入并提交某些内容时,它会创建一条带有我输入的文本和一些预制元素的推文你在这里看到: [1]:https://i.stack.imgur.com/pvfSf.png 带有 Like 和 Delete 按钮的随机字母是我每次提交的。

我感到困惑的是,为什么当我使用此代码时,每条推文都会被删除:

const deleteTweet = () =>{
    setTweets(tweets.filter(tweet => tweet !== tweet))
}

但是当我使用这段代码时,只有我点击删除的一条特定推文被删除:

const deleteTweet = () =>{
    setTweets(tweets.filter(t => t !== tweet))
}

!== 之后的“tweet”是我要传递的道具。

【问题讨论】:

  • tweet !== tweet 中,tweet 都是完全相同的变量。没有不等于自身的值(NaN 除外),因此tweet !== tweet 始终为false

标签: reactjs ecmascript-6


【解决方案1】:

您在地图上用作参数的推文和用作道具的推文之间存在冲突,Javascript 的作用域采用最新的变量,即地图的推文。

因此,当您将推文放在地图功能上时,它会覆盖道具推文。

你可以看看闭包:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2020-04-05
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多