我尝试使用钩子中的设定器更新状态值useState,但它不会更新。相同的设定器在将值设定为 true 时在不同的函式中作业。
为了确保函式呼叫是正确的,我尝试更新与错误函式不同的状态并且它可以作业!
我一直在琢磨为什么那个特定状态没有更新为布尔假值。
const initialFormState = {
  0: { a: null, b: 0.0, c: 0.0 }
};
const [form, setForm] = useState(initialFormState);
const [fileUploadModal, setFileUploadModal] = useState(false);
function openFileInput() {
  setFileUploadModal(true);  // this works fine
}
function closeFileInput() {
  setFileUploadModal(false);   // this doesn't update
  setForm(initialFormState);   // this works fine as well
  console.log(fileUploadModal, form);
}
进行完整性检查:
useEffect(() => {
  console.log('File open state modified', fileUploadModal);
}, [fileUploadModal]);
这没有更新,证明状态设定器存在一些问题。
uj5u.com热心网友回复:
听起来像setstate-doesnt-update-the-state-immediately。Setter 作业正常,你必须知道它setFileUploadModal是异步的,你可以在useEffect. 例子:
const initialFormState = {
    0: { a: null, b: 0.0, c: 0.0 }
  };
  const [form, setForm] = useState(initialFormState);
  const [fileUploadModal, setFileUploadModal] = useState(false);
 function openFileInput() {
    setFileUploadModal(true); 
  }
  function closeFileInput() {
    setFileUploadModal(false);
    setForm(initialFormState);
  }
useEffect(() => {
   console.log(fileUploadModal);
}, [fileUploadModal])
uj5u.com热心网友回复:
很抱歉这个问题,但问题是由于模板问题,点击也触发了将值设定为 true 的功能。出现混乱是因为没有呼叫状态更新 useEffect,这导致我进行了不同的调查。真正的问题是 btn 点击没有正确传播。
感谢大家的帮助!

 
							 
										
										 
										
										 
										
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										
0 评论