依賴項useEffect的執行順序問題


場景:在需要進行修改操作,給整個表單賦值時,在子組件中有依賴父級項如props.test,父級props.test被修改了

子組件:

let [data, setData] = useState<array<any>>([])

useEffect(()=>{

//此處進行了一些初始化獲取數據列表的操作

  setData([1,2,3])

},[])

useEffect(()=>{

//此處有根據初始化數據去遍歷,轉換得到值的操作

  let min = Math.min(...data)

  console.log(min)

},[props.test])

結果:會發現得到的並不是期望的最小值1;

因為此時子組件依賴父級props.test依賴項的useEffect會先執行,data此時是沒有數據的,因為還沒有執行第一個只執行一次的hook,因此結果不相符。

*所以並不是說沒有依賴的,只執行一次的useEffect寫在最上面就會先執行

修改如下,添加依賴項:

useEffect(()=>{

  let min = Math.min(...data)

  console.log(min)

},[props.test,data])

這樣執行順序就是:父級依賴項props.test的hook執行,然后是不帶依賴項的hook執行一次,最后是帶data的依賴項執行。

也就能得到最終結果了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM