我嘗試使用鉤子中的設定器更新狀態值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 點擊沒有正確傳播。
感謝大家的幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/415571.html
標籤:
