React Native
React Native — это открытый фреймворк пользовательского интерфейса, разработанный компанией Meta Platforms (ранее Facebook Inc.) и сообществом[2]. React Native используется для разработки приложений под Android[3],[4] Android TV[5], iOS[4], macOS[6], tvOS[7], Web[8], Windows[6] и UWP[9], позволяя разработчикам использовать фреймворк React совместно с родными возможностями платформ[10]. Технология применяется для создания Android- и iOS-приложений в компаниях Facebook, Microsoft и Shopify[11]. Также React Native используется при разработке приложений виртуальной реальности для Oculus[12].
Общие сведения
| React Native | |
|---|---|
| Тип | фреймворк для приложений |
| Разработчики | Meta Platforms и сообщество |
| Написана на | C++, Java, JavaScript, Objective-C, Kotlin |
| Операционная система | кроссплатформенность |
| Первый выпуск | 26 марта 2015 |
| Аппаратные платформы | Android, Android TV, iOS, macOS, tvOS, Web, Windows, UWP, VR, visionOS |
| Последняя версия |
|
| Репозиторий | github.com/facebook/reac… |
| Лицензия | MIT License |
| Сайт | reactnative.dev |
История
В 2012 году Марк Цукерберг отметил: «Самая крупная ошибка компании заключалась в том, что мы слишком сильно полагались на HTML5, а не на нативные технологии»[13].[14] Использование HTML5 в мобильной версии Facebook привело к нестабильности приложения и медленному получению данных[15]. Цукерберг пообещал, что в ближайшее время Facebook предоставит лучший мобильный опыт.
Внутри Facebook Джордан Уолке разработал ПО, генерирующее элементы пользовательского интерфейса для iOS из фонового потока JavaScript, что стало основой для веб-фреймворка React. Был организован внутренний хакатон, чтобы доработать этот прототип и создать возможность нативной разработки с помощью новой технологии[16].
В 2015 году после нескольких месяцев работы Facebook выпустила первую версию конфигурации React JavaScript. Во время технической презентации Кристофер Шедо отметил, что Facebook уже использует React Native в продакшене для своих приложений Groups и Ads Manager[17].
Реализация
Принципы работы React Native во многом совпадают с React, за исключением того, что React Native не оперирует DOM или Virtual DOM браузера[18]. Исполняющийся в фоновом процессе (на конечном устройстве) поток JavaScript интерпретирует код приложения и взаимодействует с нативной платформой через сериализованные данные по асинхронному мосту с батч-обработкой[19].[20]
Компоненты React оборачивают существующий нативный код и взаимодействуют с нативными API через декларативную парадигму UI и JavaScript[21]. В современных приложениях на React Native часто применяется TypeScript благодаря статической типизации[22].
Стилями в React Native управляют похожим на CSS синтаксисом, но без использования HTML или CSS напрямую[23]. Вместо этого управляющие сообщения передаются из JavaScript-потока для манипуляции view нативного UI. Благодаря плагинам возможна интеграция Tailwind с React Native.
React Native также доступен для Windows и macOS, поддержку которых обеспечивает Microsoft.
Пример Hello World
Пример программы Hello, World! на React Native:
import { AppRegistry, Text, View, Button } from 'react-native';
import React from 'react';
const HelloWorldApp = () => {
const [count, setCount] = React.useState(0);
const incrementCount = () => {
setCount((prevCount) => prevCount + 1);
};
return (
<View>
<Text>Hello world!</Text>
<Text>{count}</Text>
<Button onPress={incrementCount} title="Increase Count" />
</View>
);
};
export default HelloWorldApp;
AppRegistry.registerComponent('HelloWorld', () => HelloWorldApp);
Пример с TypeScript
Пример компонента-счётчика на TypeScript:
import { Button, Text, View } from "react-native";
import React from "react";
interface CounterProps {
title: string; // обязательное свойство
baseNumber?: number; // опциональное свойство
}
const Counter: React.FC<CounterProps> = ({ title, baseNumber }) => {
const [count, setCount] = React.useState<number>(baseNumber || 0);
const incrementCount = (): void => setCount((prevCount) => prevCount + 1);
return (
<View>
<Text>{count}</Text>
<Button onPress={incrementCount} title={title}></Button>
</View>
);
};
Примечания
- ↑ Release 0.81.4 — 2025.
- ↑ Глава 1. Что такое React Native? (англ.). oreilly.com. O’Reilly Media, Inc.. Дата обращения: 30 июля 2020. Архивировано 19 сентября 2025 года.
- ↑ Выпуск React Native для Android (англ.). code.facebook.com (14 сентября 2015). Дата обращения: 6 ноября 2016. Архивировано 1 октября 2015 года.
- ↑ 1 2 Shankland, Stephen Масштабный шаг Mozilla в сторону открытого ПО изменил правила тех-индустрии (англ.). CNET (29 марта 2018). Дата обращения: 11 мая 2022. Архивировано 25 мая 2025 года.
- ↑ Разработка для TV-устройств · React Native (англ.). reactnative.dev. Дата обращения: 2 октября 2020.
- ↑ 1 2 React Native для Windows и macOS · Создание нативных приложений с помощью Javascript и React (англ.). microsoft.github.io. Дата обращения: 2 октября 2020. Архивировано 19 сентября 2025 года.
- ↑ React Native для Apple TV (амер. англ.). React Native for Apple TV. Дата обращения: 2 октября 2020. Архивировано 21 сентября 2020 года.
- ↑ React Native для Web (англ.). GitHub. Дата обращения: 6 ноября 2019. Архивировано 10 октября 2025 года.
- ↑ Windows Apps Team. React Native на Universal Windows Platform (англ.). blogs.windows.com (13 апреля 2016). Дата обращения: 6 ноября 2016. Архивировано 14 апреля 2016 года.
- ↑ Внештатные платформы (англ.). reactnative.dev. Facebook, Inc.. Дата обращения: 30 июля 2020. Архивировано 26 февраля 2020 года.
- ↑ React Native Showcase (англ.). reactnative.dev. Дата обращения: 4 апреля 2023. Архивировано 31 августа 2025 года.
- ↑ React Native во втором полугодии 2021 · React Native (англ.). reactnative.dev. Дата обращения: 20 августа 2021. Архивировано 10 октября 2025 года.
- ↑ Главная ошибка Цукерберга? «Ставка на HTML5» (англ.). Mashable. Дата обращения: 7 апреля 2018. Архивировано 12 сентября 2012 года.
- ↑ Zuckerberg, Mark Беседа у камина с основателем и CEO Facebook Марком Цукербергом (англ.). TechCrunch (12 сентября 2012). Дата обращения: 16 августа 2021. Архивировано 9 апреля 2025 года.
- ↑ Warren, Christina Главная ошибка Цукерберга? «Ставка на HTML5» (англ.). Mashable. Дата обращения: 29 октября 2020. Архивировано 12 сентября 2012 года.
- ↑ Краткая история React Native (англ.). jobninja.com. Дата обращения: 16 января 2018. Архивировано 5 июня 2023 года.
- ↑ React Native: современные веб-технологии для мобильных приложений (англ.). code.facebook.com (26 марта 2015). Дата обращения: 16 января 2018. Архивировано 10 апреля 2015 года.
- ↑ Eisenman, Bonnie. Learning React Native. — O'Reilly, 2016. — ISBN 978-1-491-92900-1.
- ↑ Bridge в React Native (англ.) (14 октября 2015). Дата обращения: 16 января 2018. Архивировано 10 февраля 2025 года.
- ↑ Как мы разрабатываем приложения на React Native: 7 советов для экономии времени. Часть 2 (англ.). Дата обращения: 6 ноября 2019.
- ↑ Как создать сканер документов на React Native (англ.). sdk.docutain.com. INFOSOFT. Дата обращения: 6 сентября 2024. Архивировано 19 июля 2025 года.
- ↑ Использование TypeScript (англ.). reactnative.dev. Meta Platforms, Inc.. Дата обращения: 14 июля 2023. Архивировано 26 февраля 2020 года.
- ↑ React Native Style (англ.). Дата обращения: 24 февраля 2021. Архивировано 15 августа 2025 года.
Литература
- Eisenman, Bonnie. Learning React Native. — O'Reilly, 2016. — ISBN 978-1-491-92900-1.