Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React useState对象的行为非常奇怪_Javascript_Reactjs_State - Fatal编程技术网

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