یک نکتهی ظریف اما مهم در React که خیلیها بهش توجه نمیکنن:
useEffect در کامپوننتهای فرزند زودتر از والد اجرا میشود.
چرا؟ چون React هنگام commit از الگوریتم depth-first استفاده میکند:
در فاز render فقط درخت Fiber ساخته میشود (هنوز هیچ effectی اجرا نشده).
در فاز commit، React از عمیقترین node شروع میکند و effects مربوط به childها را اجرا میکند.
بعد از اتمام فرزندها، برمیگردد سراغ parent و effect والد را اجرا میکند.
به همین دلیل ترتیب اجرای useEffect همیشه از child → parent است.
اگه تستش کنی و داخل هر useEffect یک console.log بذاری، ترتیب اجرا غافلگیرت میکنه 😄
این جزئیات ریز گاهی در مصاحبههای React هم میتونه امتیاز مهمی برات بسازه.
📝 Hamed Latifi
@codehalics
Post #73
453

- 👌 8
- ❤ 1
- 🤔 1