# react-native: переменные компоненты URL: https://generaltranslation.com/ru/docs/react-native/guides/variables.mdx --- title: переменные компоненты description: Как использовать переменные компоненты для динамического содержимого в переводах --- {/* АВТОМАТИЧЕСКИ СГЕНЕРИРОВАНО: не редактируйте напрямую. Вместо этого изменяйте шаблон в content/docs-templates/. */} переменные компоненты позволяют безопасно включать динамические данные в компоненты [``](/docs/react-native/api/components/t). Они форматируют и локализуют их локально, не отправляя данные в API перевода, поэтому отлично подходят для конфиденциальной информации, такой как имена пользователей, номера счетов и финансовые данные. ## Доступные компоненты * [``](/docs/react-native/api/components/var): Необработанное динамическое содержимое без форматирования * [``](/docs/react-native/api/components/num): Числа с форматированием по локали * [``](/docs/react-native/api/components/currency): Денежные значения с символами валют и форматированием * [``](/docs/react-native/api/components/datetime): Дата и время в формате, соответствующем локали ## Быстрый старт Переменные компоненты используются внутри [``](/docs/react-native/api/components/t) для работы с динамическим содержимым: ```jsx import { T, Var, Num, Currency, DateTime } from 'gt-react-native'; function UserProfile({ user }) { return (

Welcome back, {user.name}!

You have {user.itemCount} items.

Balance: {user.balance}

Last login: {user.lastLogin}

); } ``` ## Как работают переменные компоненты Переменные компоненты решают проблему динамического содержимого следующим образом: 1. **Оборачивают динамические значения**, чтобы их можно было использовать внутри [``](/docs/react-native/api/components/t) 2. **Форматируют данные локально**, используя встроенные API интернационализации браузера 3. **Сохраняют конфиденциальность данных** — содержимое никогда не отправляется в API перевода 4. **Обеспечивают локализацию** на основе текущей локали пользователя ```jsx // ❌ Это не работает — динамическое содержимое внутри

Hello {username}

// ✅ Это работает — динамическое содержимое обёрнуто

Hello {username}

``` ## Руководство по компонентам ### Var — Сырое динамическое содержимое Используйте [``](/docs/react-native/api/components/var) для любого динамического содержимого, которому не нужно специальное форматирование: ```jsx // Информация о пользователе

Hello, {user.name}!

Your account ID is {user.accountId}

// Условный рендеринг Dashboard: {isAdmin ? : } ``` ### Num - Числа с форматированием Используйте [``](/docs/react-native/api/components/num) для чисел, которые должны отображаться в соответствии с правилами форматирования локали: ```jsx // Базовое форматирование чисел You have {itemCount} items in your cart. // Автономное использование (эквивалент number.toLocaleString()) {totalItems} // Пользовательские параметры форматирования Distance: {distance} km ``` ### Currency — Денежные суммы Используйте [``](/docs/react-native/api/components/currency) для денежных сумм: ```jsx // Базовое форматирование валюты (по умолчанию "USD") Your total is {total}. // Другие валюты Price: {price} // Произвольное форматирование {roundedAmount} ``` ### DateTime — Дата и время Используйте [``](/docs/react-native/api/components/datetime) для отображения даты и времени: ```jsx // Базовое форматирование даты Order placed on {orderDate} // Форматирование времени Last updated: {timestamp} // Произвольный формат даты {eventDate} ``` ## Конфиденциальность и безопасность ### Данные остаются локально переменные компоненты выполняют всё форматирование локально с помощью браузерных [API Intl](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl). **Никакое динамическое содержимое не отправляется в API перевода**, поэтому они идеально подходят для: * Имён пользователей и личной информации * Номеров аккаунтов и идентификаторов * Финансовых данных и балансов * Конфиденциальных временных меток и дат ```jsx // Безопасно — конфиденциальные данные остаются на стороне клиента Account balance: {balance} Last login: {lastLoginTime} ``` ### Важное исключение Будьте осторожны с вложенными компонентами [``](/docs/react-native/api/components/t) внутри переменных компонентов: ```jsx // ⚠️ Содержимое внутреннего БУДЕТ отправлено на перевод Hello, world! {/* Это будет переведено */} {privateData} {/* Это остаётся локальным */} ``` ## Автономное использование переменные компоненты можно использовать вне [``](/docs/react-native/api/components/t) только для форматирования: ```jsx // Работают аналогично соответствующим методам .toLocale*() {count} // count.toLocaleString() {price} // форматирование цены {date} // date.toLocaleDateString() ``` ## Типичные проблемы ### Игнорирование параметров локали Для [``](/docs/react-native/api/components/currency) обязательно передавайте проп `currency`, чтобы указать валюту. Это гарантирует, что при отображении значения будут использоваться правильный символ валюты и формат: ```jsx // ❌ По умолчанию используется USD — может не соответствовать ожиданиям пользователей The item costs {price} // ✅ Явно укажите валюту The item costs {price} ``` У других компонентов также есть необязательные свойства, которые позволяют настроить форматирование: ```jsx // Базовое форматирование {count} items in stock // Настраиваемое форматирование {percentage} completion rate // Форматирование даты Last updated: {lastUpdate} ``` ## Следующие шаги * [Руководство по ветвлению компонентов](/docs/react-native/guides/branches) - Добавьте в переводы условную логику * [Руководство по переводу строк](/docs/react-native/guides/strings) - Переводите обычный текст без JSX * Справочник по API: * [`` Component](/docs/react-native/api/components/var) * [`` Component](/docs/react-native/api/components/num) * [`` Component](/docs/react-native/api/components/currency)