React密码输入按钮点击报错求助(附代码及相关链接)
按钮点击报错的修复方案
问题根源
你这段代码里的按钮点击逻辑有两个明显问题:
onClick里的参数cur是React的合成事件对象,不是你想获取的之前的pressedNumbers状态,直接用...cur展开事件对象肯定会报错。- 更新数组状态的语法错误,没有正确基于旧状态生成新数组。
修复后的按钮代码
<button key={idx} onClick={() => setPressedNumbers(prevState => [...prevState, number])} > {number} </button>
关键修正点
- 用函数式更新:当新状态需要依赖旧状态时,必须给
setState传一个函数,函数参数prevState就是当前的pressedNumbers数组,这样能保证拿到最新的状态值。 - 遵循React状态不可变原则:通过
[...prevState, number]创建新数组,把新点击的数字追加到旧数组后面,而不是直接修改原数组。
另外提个小细节:代码里的isCorrrect拼写错了,应该是isCorrect,虽然这不是当前报错的原因,但后续可能影响逻辑判断,建议一起修正。
内容的提问来源于stack exchange,提问作者Ram01
相关产品推荐
相关产品推荐

