我嘗試構建此方法 addgamer() 以檢查用戶名是否存在于玩家陣列 onClick 添加按鈕中,如果存在,我希望它不要將他的資訊作為物件添加到陣列中,我想知道為什么它沒有不行嗎?....我創建了這個 enterdata() 方法來獲取這三個玩家資訊的值 onChange the values of their inputs
class App extends Component {
state= {
gamer:{
FirstName:"",
LastName: "",
UserName: "",
},
gamers:[],
}
enterdata = (event)=> {
const {name, value} = event.target;
this.setState((prevstate)=>({
gamer: {...prevstate.gamer,[name] : value},
}))
}
addgamer = (event) =>{
event.preventDefault();
for(let i = 0;i<this.state.gamers.length; i ){
if(this.state.gamer.UserName === this.state.gamers[i].UserName){
return false;
}else{
this.setState(prevstate =>({
gamers: [...prevstate.gamers, this.state.gamer],
gamer: {FirstName:"", LastName: "", UserName: ""},
}))
}
}
}
uj5u.com熱心網友回復:
這里的問題是每次找不到用戶名時您都在添加游戲玩家。您應該做的是設定一個標志以查看是否在玩家串列中找到了用戶名,然后如果未找到用戶名,則執行添加新玩家的操作,如下所示:setState
let found = false;
for(let i = 0;i<this.state.gamers.length; i ){
if(this.state.gamer.UserName === this.state.gamers[i].UserName){
found = true;
break;
}
}
if (!found) {
this.setState(prevstate =>({
gamers: [...prevstate.gamers, this.state.gamer],
gamer: {FirstName:"", LastName: "", UserName: ""},
}))
}
uj5u.com熱心網友回復:
您可以使用
this.state.gamers.find(x => x.UserName === this.state.gamer.UserName);
檢查用戶是否存在。這看起來會更干凈一些
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/489832.html
標籤:javascript 反应 班级 成分 状态
