Beide führen effects aus, aber zu unterschiedlichen Zeitpunkten relativ zum Browser-Rendering — und genau dieser Timing-Unterschied ist der ganze Sinn.
useEffectläuft nachdem der Browser gerendert hat. Es ist asynchron und nicht-blockierend. Nutze es für fast alles (Daten, Subscriptions, Logging).useLayoutEffectläuft . Nutze es, wenn du das Layout lesen und das DOM im selben Frame ändern musst, um Flackern zu vermeiden.
