const [businessHour, setBusinessHour] = useState("");
const getHour = () => {
console.log(businessHour);
}
setBusinessHour('1234');
getHour();
結果顯示“”而不是“1234”,有什么方法可以更新變數嗎?謝謝
uj5u.com熱心網友回復:
請更新您的整個組件代碼。結果會""
先顯示空字串,然后當狀態改變時,它會列印"1234"
。所以會有多個日志記錄,而不僅僅是一個。
uj5u.com熱心網友回復:
我之前也遇到過同樣的問題。我的解決方法是創建一個臨時變數來使用,因為狀態尚未更新。
const [businessHour, setBusinessHour] = useState("");
const getHour = (businessHour) => {
console.log(businessHour);
}
let newBusinessHour = '1234'
setBusinessHour(newBusinessHour);
getHour(newBusinessHour);
uj5u.com熱心網友回復:
更好的方法是使用 useEffect 回呼:
const [businessHour, setBusinessHour] = useState("");
useEffect(() => {
getHour()
},[getHour])
const getHour = useCallback(() => {
console.log(businessHour);
},[businessHour])
setBusinessHour('1234');
所以這里基本上useEffect
會在getHour
依賴于的變化時被呼叫businessHour
希望能幫助到你。
uj5u.com熱心網友回復:
如果要更新某些視圖,然后更新該狀態,則可以更新狀態。在上述情況下,您不需要更新狀態。
businessHour = '1234';
getHour();
然后你會得到你想要的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/508503.html
標籤:javascript 反应 反应式 异步