Javascript 如何防止div在使用react单击一次后增加upvote的值
我有一个div,它通过在用户单击div时增加upvote的值来执行onclick事件。它会增加值,这很好,但我只希望它只增加一次,即使用户多次单击div 这是我的密码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(
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,或者另一种方法是在第一次向上投票后完全禁用按钮。