import React, { useEffect, useState } from 'react';
const Demo1 = () =>{
const [count, setCount] = useState('1')
useEffect(()=>{
setCount('2')
setCount('3')
}, [])
useEffect(()=>{
console.log(count)
}, [count])
return (
<>
<div>Demo1</div>
</>
)
}
export default Demo1
希望呈現的畫面:
console.log => 1, 2, 3
實際出現的畫面:
console.log => 1, 3
想請問一下,為什麼出來的是1, 3而非1,2,3?
按理來說,當count的值出現變化時,不是應該就會觸發第二個useEffect?
但試過幾次發現好像都只會顯示預設值跟最後渲染的值
React的setState在React 18以前,大部份是非同步的(呼叫setState當下並不會馬上更新值)。18以後全部都會是非同步的
詳請可以參考小弟之前的文章(偷打廣告XD)
<下篇> 結論(React的setState什麼時候是同步/非同步)
<上篇> 原理(React的setState是同步/非同步的原因)