# gt-react: General Translation React SDK: Компоненты ветвления
URL: https://generaltranslation.com/ru/docs/react/guides/branches.mdx
---
title: Компоненты ветвления
description: Как использовать компоненты ветвления для условного содержимого в переводах
---
{/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого измените шаблон в content/docs-templates/. */}
Компоненты ветвления позволяют условно отображать содержимое внутри компонентов [``](/docs/react/api/components/t). Они обрабатывают динамическую логику, такую как условия if/else и правила множественного числа, обеспечивая при этом корректный перевод всех вариантов содержимого.
## Доступные компоненты
* [``](/docs/react/api/components/branch): Условное содержимое на основе значений или состояний
* [``](/docs/react/api/components/plural): Автоматическая обработка множественного числа по правилам локали
## Быстрый старт
Компоненты ветвления используются внутри [``](/docs/react/api/components/t) для обработки условной логики:
```jsx
import { T, Branch, Plural, Num, Var } from 'gt-react';
function NotificationPanel({ user, messageCount }) {
return (
{user.name} is currently online
}
away={{user.name} is away
}
>
{user.name} status unknown
You have {messageCount} message}
other={You have {messageCount} messages
}
/>
);
}
```
## Как работают компоненты ветвления
Компоненты ветвления решают проблему условного рендеринга внутри переводов следующим образом:
1. **Заменяют тернарные операторы** и условную логику внутри [``](/docs/react/api/components/t)
2. **Предоставляют резервный вариант**, если условия не соответствуют ожидаемым значениям
3. **Позволяют переводить** все возможные варианты контента
4. **Автоматически учитывают правила локали** для обработки множественного числа
```jsx
// ❌ Это не работает — условная логика внутри
{isActive ? 'User is active' : 'User is inactive'}
// ✅ Это работает — условная логика с ветвлением
User is active}
false={User is inactive
}
/>
```
## Руководство по компонентам
### Branch — Условное содержимое
Используйте [``](/docs/react/api/components/branch) для любого условного рендеринга в зависимости от значений или состояний:
```jsx
// Отображение статуса пользователя
Administrator Dashboard}
user={User Dashboard
}
guest={Guest Access
}
>
Access level unknown
// Булевы условия
Welcome back!}
false={Please log in
}
/>
// Уровни подписки
Upgrade to unlock premium features}
premium={Enjoy your premium experience
}
enterprise={Contact support for enterprise solutions
}
>
Subscription status unavailable
```
### Plural — умная обработка множественного числа
Используйте [``](/docs/react/api/components/plural) для содержимого, которое меняется в зависимости от количества:
```jsx
// Базовая обработка множественного числа
{itemCount} item in cart}
other={{itemCount} items in cart
}
/>
// Обработка нулевого значения
No new notifications}
one={{notifications} notification
}
other={{notifications} notifications
}
/>
// Сложная обработка множественного числа (следует правилам Unicode CLDR)
Due today}
one={Due in {days} day
}
few={Due in {days} days
}
many={Due in {days} days
}
other={Due in {days} days
}
/>
```
### Сочетание с переменными компонентами
Ветвление и переменные компоненты отлично работают вместе:
```jsx
Order {order.id} is pending.
Total: {order.total}
}
shipped={
Order {order.id} shipped on {order.shippedDate}
}
delivered={
Order {order.id} was delivered successfully
}
>
Order status unknown
```
## Когда использовать компоненты ветвления
### Замените тернарные операторы
Преобразуйте условную логику для использования с [``](/docs/react/api/components/t):
```jsx
// ❌ Нельзя использовать тернарный оператор в
{isActive ? Active user
: Inactive user
}
// ✅ Используйте Branch вместо него
Active user}
false={Inactive user
}
/>
```
### Обработка нескольких условий
Замените операторы switch или несколько условий if/else:
```jsx
// ❌ Сложная условная логика
{status === 'loading' ? Loading...
:
status === 'error' ? Error occurred
:
status === 'success' ? Success!
:
Unknown status
}
// ✅ Чистая логика ветвления
Loading...}
error={Error occurred
}
success={Success!
}
>
Unknown status
```
### Правила множественного числа
Замените ручную обработку множественного числа:
```jsx
// ❌ Ручная обработка множественного числа
{count === 1 ? 1 item
: {count} items
}
// ✅ Автоматическая обработка множественного числа
{count} item}
other={{count} items
}
/>
```
## Автономное использование
Компоненты ветвления можно использовать вне [``](/docs/react/api/components/t) для чистой логики, без перевода:
```jsx
// Чистый условный рендеринг
}
light={}
>
// Чистая обработка множественного числа
}
other={}
/>
```
## Частые проблемы
### Отсутствующие ключи вариантов
Всегда указывайте резервный вариант для значений, которые не совпадают ни с одним вариантом:
```jsx
// ❌ Нет резервного варианта для неожиданных значений
}
user={}
// Что если userRole равно "moderator"?
/>
// ✅ Всегда указывайте резервный вариант
}
user={}
>
{/* Резервный вариант для любого другого значения */}
```
### Неполные формы множественного числа
Укажите необходимые формы множественного числа для локали по умолчанию:
```jsx
// ❌ Отсутствует форма "other"
1 item}
// А как насчёт 0, 2, 3 и т.д.?
/>
// ✅ Укажите необходимые формы
No items}
one={1 item
}
other={{count} items
}
/>
```
### Сложная вложенная логика
Хотя такой вариант работает, мы рекомендуем делать логику ветвления простой и избегать глубокой вложенности:
```jsx
// ❌ Сложная вложенная ветвящаяся логика
{/* Сложно читать и поддерживать */}
// ✅ Упростите логику или используйте несколько компонентов
}
active-offline={}
inactive-online={}
>
```
Подробнее о правилах обработки множественного числа см. в [документации Unicode CLDR](https://cldr.unicode.org/index/cldr-spec/plural-rules).
## Следующие шаги
* [Руководство по переводу строк](/docs/react/guides/strings) — Переводите обычный текст без JSX
* [Руководство по динамическому контенту](/docs/key-concepts/dynamic-content) — Работа с переводом во время выполнения
* Справочник API:
* [Компонент ``](/docs/react/api/components/branch)