<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[React]]></title><description><![CDATA[Обсуждаем React: JSX, Redux, React Hook Form, MobX, Custom Hooks, Хуки, Zustand, Vite, Webpack, MUI. Поделись опытом, задай вопросы и получи ответы от сообщества разработчиков React. Узнай, как создавать мощные и масштабируемые приложения с помощью React и его экосистемы.]]></description><link>https://forum.exlends.ru/category/18</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 06:37:31 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/category/18.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Apr 2026 13:33:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Как настроить React с Vite?]]></title><link>https://forum.exlends.ru/topic/2073/kak-nastroit-react-s-vite</link><guid isPermaLink="true">https://forum.exlends.ru/topic/2073/kak-nastroit-react-s-vite</guid><pubDate>Mon, 20 Apr 2026 13:33:27 GMT</pubDate></item><item><title><![CDATA[react localstorage]]></title><description><![CDATA[@FARTYIY отодвигай проект, скажи что заболел и потребуется еще несколько дней.
Вот мой тг, пиши, вечером смогу посмотреть код: @kdvoryaninov
]]></description><link>https://forum.exlends.ru/topic/1858/react-localstorage</link><guid isPermaLink="true">https://forum.exlends.ru/topic/1858/react-localstorage</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Sun, 22 Mar 2026 18:49:37 GMT</pubDate></item><item><title><![CDATA[А какая иерархия компонентов оптимальна?]]></title><description><![CDATA[За ответы огромное всем спасибо!
Теперь, благодаря ответам, есть, в какую сторону смотреть.
]]></description><link>https://forum.exlends.ru/topic/253/a-kakaya-ierarhiya-komponentov-optimalna</link><guid isPermaLink="true">https://forum.exlends.ru/topic/253/a-kakaya-ierarhiya-komponentov-optimalna</guid><dc:creator><![CDATA[Androbim]]></dc:creator><pubDate>Thu, 18 Sep 2025 17:48:27 GMT</pubDate></item><item><title><![CDATA[Синтаксис JSX: списки и события]]></title><description><![CDATA[Разница в том, что в первом случае ты передаёшь ссылку на функцию, а во втором создаёшь новую функцию-обёртку. Для производительности лучше первый вариант, если не нужно передавать аргументы. Иначе могут быть лишние ререндеры.
]]></description><link>https://forum.exlends.ru/topic/228/sintaksis-jsx-spiski-i-sobytiya</link><guid isPermaLink="true">https://forum.exlends.ru/topic/228/sintaksis-jsx-spiski-i-sobytiya</guid><dc:creator><![CDATA[Wowk]]></dc:creator><pubDate>Fri, 29 Aug 2025 10:18:33 GMT</pubDate></item><item><title><![CDATA[История развития React — вопрос для собеседования]]></title><description><![CDATA[@Jspi Ох были времена! Помню как я начинал с версии 16 и писал классовые, а не функциональные компоненты. Было весело, а щас тьфу 
]]></description><link>https://forum.exlends.ru/topic/182/istoriya-razvitiya-react-vopros-dlya-sobesedovaniya</link><guid isPermaLink="true">https://forum.exlends.ru/topic/182/istoriya-razvitiya-react-vopros-dlya-sobesedovaniya</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Mon, 30 Jun 2025 14:10:43 GMT</pubDate></item><item><title><![CDATA[Что такое React, вопрос для собеседования?]]></title><link>https://forum.exlends.ru/topic/181/chto-takoe-react-vopros-dlya-sobesedovaniya</link><guid isPermaLink="true">https://forum.exlends.ru/topic/181/chto-takoe-react-vopros-dlya-sobesedovaniya</guid><pubDate>Mon, 30 Jun 2025 13:53:53 GMT</pubDate></item><item><title><![CDATA[React собеседование, вопросы и ответы часть 2]]></title><link>https://forum.exlends.ru/topic/180/react-sobesedovanie-voprosy-i-otvety-chast-2</link><guid isPermaLink="true">https://forum.exlends.ru/topic/180/react-sobesedovanie-voprosy-i-otvety-chast-2</guid><pubDate>Mon, 30 Jun 2025 13:03:04 GMT</pubDate></item><item><title><![CDATA[React собеседование, вопросы и ответы часть 1]]></title><link>https://forum.exlends.ru/topic/179/react-sobesedovanie-voprosy-i-otvety-chast-1</link><guid isPermaLink="true">https://forum.exlends.ru/topic/179/react-sobesedovanie-voprosy-i-otvety-chast-1</guid><pubDate>Mon, 30 Jun 2025 13:01:40 GMT</pubDate></item><item><title><![CDATA[Новые клиентские хуки в React 19]]></title><description><![CDATA[Продолжаю делиться своими находками из React 19, про три важных нововведения: работу с ref, метаданными и обработку ошибок. Эти изменения существенно упрощают разработку и делают код более чистым.
Упрощённая передача ref
Раньше, чтобы передать ref в компонент, нужно было оборачивать его в forwardRef. Это создавало дополнительный уровень сложности и увеличивало объём кода. В React 19 всё стало гораздо проще — теперь можно передавать ref как обычное свойство!
Пример:
function CustomButton({ ref }) {
  return &lt;button ref={ref}&gt;Нажми меня&lt;/button&gt;;
}

// Использование:
&lt;CustomButton ref={myButtonRef} /&gt;;

Теперь не нужно думать о том, как правильно обернуть компонент или следить за тем, чтобы ref был корректно передан. Код стал понятнее и короче. Особенно это полезно для небольших компонентов, где использование forwardRef раньше казалось избыточным.
Поддержка метаданных
Ещё одно долгожданное изменение — возможность напрямую управлять метатегами (&lt;title&gt;, &lt;meta&gt;, &lt;link&gt;) прямо внутри компонентов. Раньше для этого приходилось использовать сторонние библиотеки, такие как react-helmet. Теперь всё это доступно “из коробки”.
Пример:
function BlogPost({ post }) {
  return (
    &lt;article&gt;
      &lt;h1&gt;{post.title}&lt;/h1&gt;
      &lt;title&gt;{post.title}&lt;/title&gt;
      &lt;meta name="description" content={post.summary} /&gt;
      &lt;meta name="keywords" content={post.tags.join(', ')} /&gt;
      &lt;p&gt;{post.content}&lt;/p&gt;
    &lt;/article&gt;
  );
}

Это особенно удобно для управления SEO-данными. Например, если вы пишете блог или новостной сайт, теперь можно легко динамически обновлять заголовки и метатеги на основе данных, полученных от сервера. Плюс ко всему, это работает быстрее, чем через сторонние решения.
Оптимизированная обработка ошибок
Ошибки — это неизбежная часть разработки, но React 19 сделал их обработку намного удобнее. Теперь сообщения об ошибках стали более информативными и компактными. Система отображает только одно четкое сообщение, что помогает быстрее находить и исправлять проблемы.
Например, раньше при возникновении ошибки могла появиться целая куча текста с трейсами, которые были трудно интерпретировать. Сейчас же вы видите только самое важное:
Error: Cannot read properties of undefined (reading 'map')
Component: BlogPost
Location: src/components/BlogPost.js:25

Это значительно ускоряет процесс отладки, особенно в больших проектах, где раньше приходилось тратить время на анализ огромных логов.
Личные впечатления
Поработав с этими нововведениями, могу сказать, что они действительно делают жизнь разработчика проще. Вот что мне особенно понравилось:

Упрощённая работа с ref: больше никаких лишних обёрток, всё просто и интуитивно.
Метаданные: теперь можно забыть про react-helmet и подобные библиотеки. Всё необходимое есть в React.
Обработка ошибок: более чёткие сообщения помогают быстрее находить проблемы, а это экономит кучу времени.

Если у вас есть опыт использования этих фич или вопросы по ним — пишите в комментариях! Интересно узнать, как эти изменения повлияли на ваши проекты.
]]></description><link>https://forum.exlends.ru/topic/90/novye-klientskie-huki-v-react-19</link><guid isPermaLink="true">https://forum.exlends.ru/topic/90/novye-klientskie-huki-v-react-19</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Tue, 25 Feb 2025 13:50:44 GMT</pubDate></item><item><title><![CDATA[Each child in a list should have a unique &quot;key&quot; prop]]></title><link>https://forum.exlends.ru/topic/83/each-child-in-a-list-should-have-a-unique-key-prop</link><guid isPermaLink="true">https://forum.exlends.ru/topic/83/each-child-in-a-list-should-have-a-unique-key-prop</guid><pubDate>Mon, 03 Feb 2025 08:03:55 GMT</pubDate></item><item><title><![CDATA[Cannot update a component while rendering a different component]]></title><link>https://forum.exlends.ru/topic/82/cannot-update-a-component-while-rendering-a-different-component</link><guid isPermaLink="true">https://forum.exlends.ru/topic/82/cannot-update-a-component-while-rendering-a-different-component</guid><pubDate>Mon, 03 Feb 2025 08:02:46 GMT</pubDate></item><item><title><![CDATA[Шпаргалка по React 19]]></title><description><![CDATA[Давно искал что-то компактное и удобное, похожее на шпаргалку. Скорее всего не пригодится, но лучше чтобы было. Компановка очень удобная
]]></description><link>https://forum.exlends.ru/topic/75/shpargalka-po-react-19</link><guid isPermaLink="true">https://forum.exlends.ru/topic/75/shpargalka-po-react-19</guid><dc:creator><![CDATA[SkitRa]]></dc:creator><pubDate>Wed, 29 Jan 2025 08:56:23 GMT</pubDate></item><item><title><![CDATA[Оптимизация React js приложений. Использование функции debounde()]]></title><description><![CDATA[@kirilljs Возможно магия реакта onInput  и onChange делает  идентичными, https://github.com/facebook/react/issues/3964
Скорее всего можно использовать и то и то
]]></description><link>https://forum.exlends.ru/topic/29/optimizaciya-react-js-prilozhenij-ispolzovanie-funkcii-debounde</link><guid isPermaLink="true">https://forum.exlends.ru/topic/29/optimizaciya-react-js-prilozhenij-ispolzovanie-funkcii-debounde</guid><dc:creator><![CDATA[Manul]]></dc:creator><pubDate>Fri, 25 Oct 2024 15:19:53 GMT</pubDate></item><item><title><![CDATA[Cannot find name &#x27;ChangeEvent&#x27;.ts(2304) type ChangeEvent = &#x2F;*unresolved*&#x2F; any]]></title><link>https://forum.exlends.ru/topic/26/cannot-find-name-changeevent-ts-2304-type-changeevent-unresolved-any</link><guid isPermaLink="true">https://forum.exlends.ru/topic/26/cannot-find-name-changeevent-ts-2304-type-changeevent-unresolved-any</guid><pubDate>Wed, 23 Oct 2024 10:53:05 GMT</pubDate></item><item><title><![CDATA[Как импортировать компонент react]]></title><link>https://forum.exlends.ru/topic/25/kak-importirovat-komponent-react</link><guid isPermaLink="true">https://forum.exlends.ru/topic/25/kak-importirovat-komponent-react</guid><pubDate>Fri, 11 Oct 2024 11:00:54 GMT</pubDate></item><item><title><![CDATA[Как передать пропсы в компонент React]]></title><link>https://forum.exlends.ru/topic/24/kak-peredat-propsy-v-komponent-react</link><guid isPermaLink="true">https://forum.exlends.ru/topic/24/kak-peredat-propsy-v-komponent-react</guid><pubDate>Fri, 11 Oct 2024 10:54:31 GMT</pubDate></item><item><title><![CDATA[React: Как создать компонент]]></title><link>https://forum.exlends.ru/topic/23/react-kak-sozdat-komponent</link><guid isPermaLink="true">https://forum.exlends.ru/topic/23/react-kak-sozdat-komponent</guid><pubDate>Fri, 11 Oct 2024 09:33:56 GMT</pubDate></item></channel></rss>