From 4d2d61b473f66162399abce4259427f797cb937b Mon Sep 17 00:00:00 2001
From: "translate-react-bot[bot]"
<251169733+translate-react-bot[bot]@users.noreply.github.com>
Date: Wed, 4 Feb 2026 14:42:05 +0000
Subject: [PATCH 1/5] =?UTF-8?q?docs:=20translate=20`react-labs-what-we-hav?=
=?UTF-8?q?e-been-working-on-february-2024.md`=20to=20=D0=A0=D1=83=D1=81?=
=?UTF-8?q?=D1=81=D0=BA=D0=B8=D0=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...t-we-have-been-working-on-february-2024.md | 96 +++++++++----------
1 file changed, 48 insertions(+), 48 deletions(-)
diff --git a/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md b/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
index ffe761624b..b1e25e9dc4 100644
--- a/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
+++ b/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
@@ -1,52 +1,52 @@
---
-title: "React Labs: What We've Been Working On – February 2024"
+title: "React Labs: Над чем мы работали – Февраль 2024"
author: Joseph Savona, Ricky Hanlon, Andrew Clark, Matt Carroll, and Dan Abramov
date: 2024/02/15
-description: In React Labs posts, we write about projects in active research and development. We’ve made significant progress since our last update, and we’d like to share our progress.
+description: В постах React Labs мы пишем о проектах, находящихся в активной стадии исследований и разработок. С момента нашего последнего обновления мы добились значительного прогресса и хотели бы поделиться им.
---
-February 15, 2024 by [Joseph Savona](https://twitter.com/en_JS), [Ricky Hanlon](https://twitter.com/rickhanlonii), [Andrew Clark](https://twitter.com/acdlite), [Matt Carroll](https://twitter.com/mattcarrollcode), and [Dan Abramov](https://bsky.app/profile/danabra.mov).
+15 февраля 2024 г. [Joseph Savona](https://twitter.com/en_JS), [Ricky Hanlon](https://twitter.com/rickhanlonii), [Andrew Clark](https://twitter.com/acdlite), [Matt Carroll](https://twitter.com/mattcarrollcode) и [Dan Abramov](https://bsky.app/profile/danabra.mov).
---
-In React Labs posts, we write about projects in active research and development. We’ve made significant progress since our [last update](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023), and we’d like to share our progress.
+В постах React Labs мы пишем о проектах, находящихся в активной стадии исследований и разработок. С момента нашего [последнего обновления](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023) мы добились значительного прогресса и хотели бы поделиться им.
-React Conf 2024 is scheduled for May 15–16 in Henderson, Nevada! If you’re interested in attending React Conf in person, you can [sign up for the ticket lottery](https://forms.reform.app/bLaLeE/react-conf-2024-ticket-lottery/1aRQLK) until February 28th.
+React Conf 2024 пройдет 15–16 мая в Хендерсоне, Невада! Если вы заинтересованы в посещении React Conf лично, вы можете [зарегистрироваться для участия в лотерее билетов](https://forms.reform.app/bLaLeE/react-conf-2024-ticket-lottery/1aRQLK) до 28 февраля.
-For more info on tickets, free streaming, sponsoring, and more, see [the React Conf website](https://conf.react.dev).
+Для получения дополнительной информации о билетах, бесплатной трансляции, спонсорстве и многом другом посетите [сайт React Conf](https://conf.react.dev).
---
-## React Compiler {/*react-compiler*/}
+## Компилятор React {/*react-compiler*/}
-React Compiler is no longer a research project: the compiler now powers instagram.com in production, and we are working to ship the compiler across additional surfaces at Meta and to prepare the first open source release.
+Компилятор React больше не является исследовательским проектом: теперь он обеспечивает работу instagram.com в продакшене, и мы работаем над внедрением компилятора на других платформах в Meta, а также над подготовкой первого релиза с открытым исходным кодом.
-As discussed in our [previous post](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-optimizing-compiler), React can *sometimes* re-render too much when state changes. Since the early days of React our solution for such cases has been manual memoization. In our current APIs, this means applying the [`useMemo`](/reference/react/useMemo), [`useCallback`](/reference/react/useCallback), and [`memo`](/reference/react/memo) APIs to manually tune how much React re-renders on state changes. But manual memoization is a compromise. It clutters up our code, is easy to get wrong, and requires extra work to keep up to date.
+Как обсуждалось в нашем [предыдущем посте](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-optimizing-compiler), React *иногда* может слишком много перерисовывать при изменении состояния. С самых ранних дней React нашим решением для таких случаев была ручная мемоизация. В наших текущих API это означает применение [`useMemo`](/reference/react/useMemo), [`useCallback`](/reference/react/useCallback) и [`memo`](/reference/react/memo) для ручной настройки того, сколько React перерисовывает при изменении состояния. Но ручная мемоизация — это компромисс. Она загромождает наш код, её легко сделать неправильно, и она требует дополнительных усилий для поддержания в актуальном состоянии.
-Manual memoization is a reasonable compromise, but we weren’t satisfied. Our vision is for React to *automatically* re-render just the right parts of the UI when state changes, *without compromising on React’s core mental model*. We believe that React’s approach — UI as a simple function of state, with standard JavaScript values and idioms — is a key part of why React has been approachable for so many developers. That’s why we’ve invested in building an optimizing compiler for React.
+Ручная мемоизация — разумный компромисс, но мы не были удовлетворены. Наше видение состоит в том, чтобы React *автоматически* перерисовывал только нужные части пользовательского интерфейса при изменении состояния, *не жертвуя основной ментальной моделью React*. Мы считаем, что подход React — UI как простая функция состояния, со стандартными значениями и идиомами JavaScript — является ключевой частью того, почему React был доступен для многих разработчиков. Именно поэтому мы инвестировали в создание оптимизирующего компилятора для React.
-JavaScript is a notoriously challenging language to optimize, thanks to its loose rules and dynamic nature. React Compiler is able to compile code safely by modeling both the rules of JavaScript *and* the “rules of React”. For example, React components must be idempotent — returning the same value given the same inputs — and can’t mutate props or state values. These rules limit what developers can do and help to carve out a safe space for the compiler to optimize.
+JavaScript — это известная сложная для оптимизации язык, благодаря своим гибким правилам и динамической природе. Компилятор React может безопасно компилировать код, моделируя как правила JavaScript, так и «правила React». Например, компоненты React должны быть идемпотентными — возвращать одно и то же значение при одинаковых входных данных — и не могут изменять пропсы или значения состояния. Эти правила ограничивают то, что могут делать разработчики, и помогают создать безопасное пространство для оптимизации компилятором.
-Of course, we understand that developers sometimes bend the rules a bit, and our goal is to make React Compiler work out of the box on as much code as possible. The compiler attempts to detect when code doesn’t strictly follow React’s rules and will either compile the code where safe or skip compilation if it isn’t safe. We’re testing against Meta’s large and varied codebase in order to help validate this approach.
+Конечно, мы понимаем, что разработчики иногда немного нарушают правила, и наша цель — сделать так, чтобы Компилятор React работал «из коробки» с как можно большим количеством кода. Компилятор пытается обнаружить, когда код не строго следует правилам React, и либо компилирует код там, где это безопасно, либо пропускает компиляцию, если это небезопасно. Мы тестируем на большой и разнообразной кодовой базе Meta, чтобы помочь проверить этот подход.
-For developers who are curious about making sure their code follows React’s rules, we recommend [enabling Strict Mode](/reference/react/StrictMode) and [configuring React’s ESLint plugin](/learn/editor-setup#linting). These tools can help to catch subtle bugs in your React code, improving the quality of your applications today, and future-proofs your applications for upcoming features such as React Compiler. We are also working on consolidated documentation of the rules of React and updates to our ESLint plugin to help teams understand and apply these rules to create more robust apps.
+Разработчикам, которые хотят убедиться, что их код соответствует правилам React, мы рекомендуем [включить Strict Mode](/reference/react/StrictMode) и [настроить ESLint-плагин React](/learn/editor-setup#linting). Эти инструменты могут помочь выявить тонкие ошибки в вашем коде React, улучшая качество ваших приложений сегодня и подготавливая их к будущим функциям, таким как Компилятор React. Мы также работаем над консолидированной документацией правил React и обновлениями нашего ESLint-плагина, чтобы помочь командам понять и применять эти правила для создания более надежных приложений.
-To see the compiler in action, you can check out our [talk from last fall](https://www.youtube.com/watch?v=qOQClO3g8-Y). At the time of the talk, we had early experimental data from trying React Compiler on one page of instagram.com. Since then, we shipped the compiler to production across instagram.com. We’ve also expanded our team to accelerate the rollout to additional surfaces at Meta and to open source. We’re excited about the path ahead and will have more to share in the coming months.
+Чтобы увидеть компилятор в действии, вы можете посмотреть наш [доклад с прошлого осени](https://www.youtube.com/watch?v=qOQClO3g8-Y). На момент доклада у нас были ранние экспериментальные данные о попытке использования Компилятора React на одной странице instagram.com. С тех пор мы внедрили компилятор в продакшн на всем instagram.com. Мы также расширили нашу команду, чтобы ускорить внедрение на других платформах в Meta и для открытого исходного кода. Мы воодушевлены предстоящим путем и поделимся новостями в ближайшие месяцы.
-## Actions {/*actions*/}
+## Действия {/*actions*/}
-We [previously shared](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components) that we were exploring solutions for sending data from the client to the server with Server Actions, so that you can execute database mutations and implement forms. During development of Server Actions, we extended these APIs to support data handling in client-only applications as well.
+Мы [ранее сообщали](/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components), что исследуем решения для отправки данных с клиента на сервер с помощью Server Actions, чтобы вы могли выполнять мутации базы данных и реализовывать формы. В процессе разработки Server Actions мы расширили эти API для поддержки обработки данных и в клиентских приложениях.
-We refer to this broader collection of features as simply "Actions". Actions allow you to pass a function to DOM elements such as [`
`](/reference/react-dom/components/form):
+Мы называем эту более широкую коллекцию функций просто «Действиями» (Actions). Действия позволяют передавать функцию DOM-элементам, таким как [``](/reference/react-dom/components/form):
```js
```
-The `action` function can operate synchronously or asynchronously. You can define them on the client side using standard JavaScript or on the server with the [`'use server'`](/reference/rsc/use-server) directive. When using an action, React will manage the life cycle of the data submission for you, providing hooks like [`useFormStatus`](/reference/react-dom/hooks/useFormStatus), and [`useActionState`](/reference/react/useActionState) to access the current state and response of the form action.
+Функция `action` может работать синхронно или асинхронно. Вы можете определить их на стороне клиента, используя стандартный JavaScript, или на сервере с помощью директивы [`'use server'`](/reference/rsc/use-server). При использовании действия React будет управлять жизненным циклом отправки данных за вас, предоставляя хуки, такие как [`useFormStatus`](/reference/react-dom/hooks/useFormStatus) и [`useActionState`](/reference/react/useActionState), для доступа к текущему состоянию и ответу действия формы.
-By default, Actions are submitted within a [transition](/reference/react/useTransition), keeping the current page interactive while the action is processing. Since Actions support async functions, we've also added the ability to use `async/await` in transitions. This allows you to show pending UI with the `isPending` state of a transition when an async request like `fetch` starts, and show the pending UI all the way through the update being applied.
+По умолчанию Действия отправляются в рамках [перехода](/reference/react/useTransition), сохраняя текущую страницу интерактивной во время обработки действия. Поскольку Действия поддерживают асинхронные функции, мы также добавили возможность использовать `async/await` в переходах. Это позволяет отображать ожидающий UI с состоянием `isPending` перехода при запуске асинхронного запроса, такого как `fetch`, и отображать ожидающий UI вплоть до применения обновления.
-Alongside Actions, we're introducing a feature named [`useOptimistic`](/reference/react/useOptimistic) for managing optimistic state updates. With this hook, you can apply temporary updates that are automatically reverted once the final state commits. For Actions, this allows you to optimistically set the final state of the data on the client, assuming the submission is successful, and revert to the value for data received from the server. It works using regular `async`/`await`, so it works the same whether you're using `fetch` on the client, or a Server Action from the server.
+Наряду с Действиями мы представляем функцию [`useOptimistic`](/reference/react/useOptimistic) для управления оптимистичными обновлениями состояния. С помощью этого хука вы можете применять временные обновления, которые автоматически отменяются после фиксации окончательного состояния. Для Действий это позволяет оптимистично установить конечное состояние данных на клиенте, предполагая успешную отправку, и отменить его до значения, полученного с сервера. Это работает с использованием обычного `async`/`await`, поэтому оно работает одинаково, независимо от того, используете ли вы `fetch` на клиенте или Server Action с сервера.
-Library authors can implement custom `action={fn}` props in their own components with `useTransition`. Our intent is for libraries to adopt the Actions pattern when designing their component APIs, to provide a consistent experience for React developers. For example, if your library provides a `` component, consider also exposing a `` API, too.
+Авторы библиотек могут реализовывать пользовательские `action={fn}` пропсы в своих компонентах с помощью `useTransition`. Наше намерение состоит в том, чтобы библиотеки принимали паттерн Действий при проектировании своих API компонентов, чтобы обеспечить единообразный опыт для разработчиков React. Например, если ваша библиотека предоставляет компонент ``, рассмотрите возможность также предоставления API ``.
-While we initially focused on Server Actions for client-server data transfer, our philosophy for React is to provide the same programming model across all platforms and environments. When possible, if we introduce a feature on the client, we aim to make it also work on the server, and vice versa. This philosophy allows us to create a single set of APIs that work no matter where your app runs, making it easier to upgrade to different environments later.
+Хотя изначально мы сосредоточились на Server Actions для передачи данных между клиентом и сервером, наша философия React заключается в предоставлении единой модели программирования для всех платформ и сред. Когда это возможно, если мы вводим функцию на клиенте, мы стремимся сделать так, чтобы она работала и на сервере, и наоборот. Эта философия позволяет нам создавать единый набор API, которые работают независимо от того, где работает ваше приложение, что упрощает обновление до различных сред в будущем.
-Actions are now available in the Canary channel and will ship in the next release of React.
+Действия теперь доступны в канале Canary и будут выпущены в следующем релизе React.
-## New Features in React Canary {/*new-features-in-react-canary*/}
+## Новые возможности в React Canary {/*new-features-in-react-canary*/}
-We introduced [React Canaries](/blog/2023/05/03/react-canaries) as an option to adopt individual new stable features as soon as their design is close to final, before they’re released in a stable semver version.
+Мы представили [React Canaries](/blog/2023/05/03/react-canaries) как опцию для принятия отдельных новых стабильных функций, как только их дизайн будет близок к завершению, до их выпуска в стабильной версии semver.
-Canaries are a change to the way we develop React. Previously, features would be researched and built privately inside of Meta, so users would only see the final polished product when released to Stable. With Canaries, we’re building in public with the help of the community to finalize features we share in the React Labs blog series. This means you hear about new features sooner, as they’re being finalized instead of after they’re complete.
+Canaries — это изменение в том, как мы разрабатываем React. Ранее функции исследовались и разрабатывались в закрытом режиме внутри Meta, поэтому пользователи видели окончательный отполированный продукт только после его выпуска в Stable. С Canaries мы разрабатываем публично с помощью сообщества, чтобы финализировать функции, которыми мы делимся в серии блогов React Labs. Это означает, что вы узнаете о новых функциях раньше, когда они дорабатываются, а не после их завершения.
-React Server Components, Asset Loading, Document Metadata, and Actions have all landed in the React Canary, and we've added docs for these features on react.dev:
+React Server Components, загрузка ресурсов, метаданные документа и Действия — все это было добавлено в React Canary, и мы добавили документацию по этим функциям на react.dev:
-- **Directives**: [`"use client"`](/reference/rsc/use-client) and [`"use server"`](/reference/rsc/use-server) are bundler features designed for full-stack React frameworks. They mark the "split points" between the two environments: `"use client"` instructs the bundler to generate a `