function UserDetails() {
const user = use(fetchUser());
return <>{user.name}</>;
}
<ErrorBoundaries error={<>Something went wrong</>}>
<Suspense fallback={<>loading</>}>
<UserDetails />
</Suspense>
</ErrorBoundaries>;
Просто порівняйте два компоненти:
1. Читати компонент
UserDetails стало набагато простіше. 2. Він зайнятий виключно тим чим потрібно - відмальовує нашого користувача
3. Коли нам знадобиться змінити лоадер - ми будемо змінювати лише компонент лоадер. Коли нам буде потрібно оновити компонент з помилкою, ми також оновимо лише його. Це гарантує що ми не зламаємо наш компонент UserDetails і рев'ювати такі зміні набагато приємніше.
4. Перевикористовувати код стало простіше, а кастомний хук більше не потрібен.
Єдиний тут "недолік", що ErrorBoundaries вам таки доведеться один раз зробити самому.
А тепер скажіть мені - який код вам легше читати та підтримувати?
@reactbeginners