Javascript React useState对象的行为非常奇怪
我有一个反应状态对象Javascript React useState对象的行为非常奇怪,javascript,reactjs,state,Javascript,Reactjs,State,我有一个反应状态对象 const [password, setPassword] = useState({ containsLetter: false, length: false, }) 然后此函数: const testPasswordLength = (pwd) => { if (pwd.length >= 8) { setPassword({ ...password, length: true }) } else {
const [password, setPassword] = useState({
containsLetter: false,
length: false,
})
然后此函数:
const testPasswordLength = (pwd) => {
if (pwd.length >= 8) {
setPassword({ ...password, length: true })
} else {
setPassword({ ...password, length: false })
}
}
它肯定被调用了,但是状态从未更新为true,即使我进入了if块。什么
也
setPassword(prevState=>({…prevState,长度:true}))
也不起作用
未在其他位置设置状态为deffo。怎么回事
我发誓这是有用的
编辑:
它不起作用,因为我在返回渲染块之前将其记录在底部:
console.log(password,'password')
两个对象键的结果都是false
我也知道,因为我的渲染块中有三元逻辑,它正在侦听状态键,原因是您可能会得到过时的数据,请尝试以下操作:
const testPasswordLength = (pwd) => {
if (pwd.length >= 8) {
setPassword((password) => ({ ...password, length: true }));
} else {
setPassword((password) => ({ ...password, length: false }));
}
};
您如何知道它是否工作?我无法复制。这里需要一个最小的可复制示例。是的,确切地说,您如何知道它是否工作?您的UI是否没有以正确的方式运行?这就是您验证的方式吗?请确保在调用
setPassword
后没有调用useState