我尝试使用钩子中的设定器更新状态值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 评论