import React ,{useState}from 'react';import './App.css';function App() { const password =[2,2,3]; const [digits ,setDigits]=useState([0,0,0]); const [isUnlocked,setIsUnlocked]=useState(false); let setDigitAtIndex=(digit,idx)=>{ setDigits((currentDigits)=> [ ...currentDigits.slice(0, idx), digit, ...currentDigits.slice(idx + 1) ] ); }; let checkPassword=() =>{ for (let i=0;i<password.length;i++){ if(password[i]===digits[i]){ return; } } setIsUnlocked(true); } return ( <section> <h1>Passo</h1> <div style={{display:'flex'}}> <input type="number" value={digits[0]} onChange={(event) => setDigitAtIndex(parseInt(event.target.value),0)}/> <input type="number" value={digits[1]} onChange={(event)=>setDigitAtIndex(parseInt(event.target.value),1)}/> <input type="number" value={ digits[2]} onChange={(event)=>setDigitAtIndex(parseInt(event.target.value),2)}/> </div> <button onClick={()=>checkPassword()}>Press Me</button> { isUnlocked && <p>Unlocked</p>} </section> );}export default App;在反应中运行此应用程序后,当我单击带有 0 0 0 的按我按钮时,它显示已解锁,但在输入 2 2 3 后它不起作用,但在输入 223 后应该可以工作需要帮助吗?以及任何正在学习反应的人那些可以回答这个问题
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
let setDigitAtIndex=(digit,idx)=>{
let temp = [...digits];
temp[idx] = digit;
setDigits(temp);
};
这看起来容易多了?
您的检查密码功能也不正确。
替换===为!==
let checkPassword=() =>{
for (let i=0;i<password.length;i++){
if(password[i]!==digits[i]){
setIsUnlocked(false); // if the password is wrong, it will hide the text again
return;
}
}
setIsUnlocked(true);
}
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消