Русский
Открыть в Telegram

Пост Композиция компонентов в React

27 сентября 2024
З
Заметки про React
Ссылка
нажмите — покажем
Композиция компонентов в React В своем блоге Доминик Дорфмайстер поделился, почему стоит предпочитать композицию компонентов и ранний возврат, а не условный рендеринг нескольких состояний. Рассмотрим пример «плохого» компонента: function Layout(props: { children: ReactNode }) { return ( <Card> <CardHeading>Welcome 👋</CardHeading> <CardContent>{props.children}</CardContent> </Card> ) } export function ShoppingList() { const { data, isPending } = useQuery(/* ... */) return ( <Layout> {data?.assignee ? <UserInfo {...data.assignee} /> : null} {isPending ? <Skeleton /> : null} {!data && !isPending ? <EmptyScreen /> : null} {data ? data.content.map((item) => ( <ShoppingItem key={item.id} {...item} /> )) : null} </Layout> ) } Этот компонент плох тем, что в нем много внутренних условных рендеров, что усложняет чтение и понимание работы компонента. Если разобраться во внутренних условиях, то компонент выше можно разделить на три соответствующих состоянию запроса: во время загрузки, нет данных и есть данные. Чтобы отображать каждое состояние запроса по отдельности, используйте ранний возврат и композицию. Такой код будет проще и легче читать. Пример: export function ShoppingList() { const { data, isPending } = useQuery(/* ... */) if (isPending) { return ( <Layout> <Skeleton /> </Layout> ) } if (!data) { return ( <Layout> <EmptyScreen /> </Layout> ) } return ( <Layout> {data.assignee ? <UserInfo {...data.assignee} /> : null} {data.content.map((item) => ( <ShoppingItem key={item.id} {...item} /> ))} </Layout> ) } https://tkdodo.eu/blog/component-composition-is-great-btw
72 · 3.4K ·

Рядом в ленте

ЗЗаметки про ReactTanStack Form Стейт менеджер формы от TanStack. Особенности: 🔴 Headless архитектура 🔴 Гранулированная реактивность 🔴 Поддержка сложных валидаций и обработок ошиЗЗаметки про ReactЧистый код React с TypeScript В своей статье Робин Везер объясняет, как правильно типизировать компоненты React, использовать встроенные типы React, обрабатыват
это сообщение
ЗЗаметки про ReactКонтроль компонентов через URL Интерактивный пост в блоге как сделать поле поиска в таблице, чтобы запрос сохранялся в URL. В примере иллюстрируется распространЗЗаметки про ReactРелиз React DevTools 6.0 Вышел релиз React DevTools 6.0. Основные изменения были связаны с поддержкой серверных компонентов. Что нового: 🔴 Поддержка серверных к
ЗЗаметки про ReactЗаметки про React@ru_react_notes · канал · Технологии
3 412подписчиков491постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем