Javascript 为什么我的按钮需要点击两次才能触发
每次我在Javascript 为什么我的按钮需要点击两次才能触发,javascript,reactjs,Javascript,Reactjs,每次我在input中键入新内容时,我都会尝试检测重复内容,我使用一个简单的进行循环,问题是如果新输入内容不是重复内容,我需要单击按钮两次,但如果新输入内容是重复内容,则效果很好,这是我的代码 teken(event){ this.setState({nama: event.target.value}); const angka = todos.length; for(var i = 0; i < todos.length; i++){ {if(todos
input
中键入新内容时,我都会尝试检测重复内容,我使用一个简单的进行循环
,问题是如果新输入内容不是重复内容,我需要单击按钮两次,但如果新输入内容是重复内容,则效果很好,这是我的代码
teken(event){
this.setState({nama: event.target.value});
const angka = todos.length;
for(var i = 0; i < todos.length; i++){
{if(todos[i].nama === this.state.value){
this.setState({beda: false})
alert("tidak boleh sama")
break
}else if(this.state.beda != false){
this.setState({beda: true})
}
}
}
if(this.state.beda){
alert("gas")
}
event.preventDefault();
}
teken(事件){
this.setState({nama:event.target.value});
常数angka=todos.length;
对于(变量i=0;i
我已经尝试过其他解决方案,但仍然不起作用,我们将感谢您的帮助,在此之前谢谢您。setState()是一个异步函数。您不能保证它会在到达警报代码之前更新状态值。此.setState()是一个异步函数。您不能保证它会在到达您的警报代码之前更新状态值。这里的问题是,您将
todos[i].nama
与this.state.value
(当前e.target.value
尚未更新,因为this.setState
是异步工作的)。
我建议这样做:
teken(event){
event.preventDefault();
const newValue = event.target.value
this.setState({ nama: newValue});
const angka = todos.length;
for(var i = 0; i < todos.length; i++){
if(todos[i].nama === newValue){
this.setState({ beda: false })
alert("tidak boleh sama")
alert("gas")
break
}else if(this.state.beda != false){
this.setState({beda: true})
}
}
}
如果要使用更新的数据访问this.state.counter
,可以执行以下操作:
this.setState({ counter: this.state.counter + 1 }, () => {
console.log(this.state.counter)
})
这里的问题是,您将
todos[i].nama
与this.state.value
(当前e.target.value
尚未更新,因为this.setState
是异步工作的)。
我建议这样做:
teken(event){
event.preventDefault();
const newValue = event.target.value
this.setState({ nama: newValue});
const angka = todos.length;
for(var i = 0; i < todos.length; i++){
if(todos[i].nama === newValue){
this.setState({ beda: false })
alert("tidak boleh sama")
alert("gas")
break
}else if(this.state.beda != false){
this.setState({beda: true})
}
}
}
如果要使用更新的数据访问this.state.counter
,可以执行以下操作:
this.setState({ counter: this.state.counter + 1 }, () => {
console.log(this.state.counter)
})