Javascript 如何防止div在使用react单击一次后增加upvote的值

Javascript 如何防止div在使用react单击一次后增加upvote的值,javascript,html,reactjs,Javascript,Html,Reactjs,我有一个div,它通过在用户单击div时增加upvote的值来执行onclick事件。它会增加值,这很好,但我只希望它只增加一次,即使用户多次单击div 这是我的密码 btnUpvote(data) { let feeds = [...this.state.feeds] let feed = feeds.find(x => x.id === data.id) // feed.upvote +1 let get = feed.upvote + 1 console.log(

我有一个div,它通过在用户单击div时增加upvote的值来执行onclick事件。它会增加值,这很好,但我只希望它只增加一次,即使用户多次单击div

这是我的密码

btnUpvote(data) {
  let feeds = [...this.state.feeds]
  let feed = feeds.find(x => x.id === data.id)
  // feed.upvote +1
  let get = feed.upvote + 1
  console.log(get)
  if (feed.upvote !== get) {

  }

  this.setState({
    feeds
  })
}

feed.upvote的值存储在对象数组中,如有任何帮助,将不胜感激。

尝试添加此条件:

 let get = 0
   if(!feed.upvote){
    get=  feed.upvote + 1}

您可以使用一个数组来存储已经被提升的id。 检查它并相应地处理您的点击

let allowOneClicks = [];

function allowOnce(id, callback) {
  if (allowOneClicks.includes(id)) return;

  allowOneClicks.push(id);
  callback();
}

在你的情况下,它可以是这样的

// outside your component;

const upvotedIds = [];

btnUpvote(data) {
  let feeds = [...this.state.feeds]
  let feed = feeds.find(x => x.id === data.id)
   
   if (upvotedIds.includes(id)) return;
    upvotedIds.push(id);

  // upvote here.
}
你可以试试这个

onHandleClick = (id) => {
  this.setState({
    feed: {
     ...this.state.feed,
     [id]: (this.state.feed[id] || 0) + 1
    }
  })
 }

通过在每次单击后检查,可以将上限设置为1,下限设置为0,或者另一种方法是在第一次向上投票后完全禁用按钮。