React Native — кроссплатформенный фреймворк с открытым исходным кодом для разработки нативных мобильных и настольных приложений на JavaScript и TypeScript, созданный Facebook, Inc. (Ныне Meta)[3].
React Native поддерживает такие платформы как Android[4], Android TV[5], iOS, macOS[6], tvOS[7], Web[8], Windows и UWP[9], позволяя разработчикам использовать возможности библиотеки React вне браузера для создания нативных приложений, имеющих полный доступ к системным API платформ[10].
Реализация
Основные принципы работы React Native практически идентичны принципам работы React, за исключением того, что React Native управляет не браузерной DOM, а платформенными интерфейсными компонентами. JavaScript-код, написанный разработчиком, выполняется в фоновом потоке, и взаимодействует с платформенными API через асинхронную систему обмена данными, называемую Bridge[11][12][13]. В 2021 году ожидается замена Bridge на более производительную синхронную модель обмена данными, поддерживающую парадигму zero-copy.
Хотя система стилей (способ конфигурации визуальных свойств элементов интерфейса) React Native имеет синтаксис, похожий на CSS, фреймворк не использует технологии HTML или CSS как таковые[14]. Вместо этого для каждой из поддерживаемых фреймворком операционных систем реализованы программные адаптеры, применяющие заданный разработчиком стиль к платформенному интерфейсному элементу.
React Native также позволяет разработчикам использовать уже существующий код, написанный на других языках программирования — например, Java или Kotlin для Android и Objective-C или Swift для iOS.
React Native поддерживает интеграцию и в уже существующие приложения — например, часть интерфейса мобильного приложения может быть реализована на React Native, а часть — при помощи чисто платформенных средств.
Пример реализации
Пример «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);
См. также
Примечания
- ↑ React Native: Bringing modern web techniques to mobile . Дата обращения: 29 апреля 2021. Архивировано 8 августа 2019 года.
- ↑ Release 0.78.0 — 2025.
- ↑ Chapter 1. What Is React Native? oreilly.com. O’Reilly Media, Inc.. Дата обращения: 30 июля 2020. Архивировано 29 апреля 2021 года.
- ↑ Android Release for React Native . Дата обращения: 29 апреля 2021. Архивировано 8 марта 2021 года.
- ↑ Building For TV Devices · React Native (англ.). reactnative.dev. Дата обращения: 2 октября 2020. Архивировано 30 июня 2020 года.
- ↑ React Native for Windows + macOS · Build native Windows & macOS apps with Javascript and React . microsoft.github.io. Дата обращения: 2 октября 2020. Архивировано 4 октября 2020 года.
- ↑ React Native for Apple TV (амер. англ.). React Native for Apple TV. Дата обращения: 2 октября 2020. Архивировано из оригинала 21 сентября 2020 года.
- ↑ React Native for Web . Дата обращения: 6 ноября 2019. Архивировано 5 декабря 2019 года.
- ↑ Windows Apps Team. React Native on the Universal Windows Platform . blogs.windows.com (13 апреля 2016). Дата обращения: 6 ноября 2016. Архивировано 7 ноября 2016 года.
- ↑ Out-of-Tree Platforms . reactnative.dev. Facebook, Inc.. Дата обращения: 30 июля 2020. Архивировано 1 июля 2020 года.
- ↑ Bridging in React Native (14 октября 2015). Дата обращения: 16 января 2018. Архивировано 9 мая 2021 года.
- ↑ React Native vs Flutter: Which Cross-Platform Framework is Better? Дата обращения: 6 ноября 2019. Архивировано из оригинала 14 мая 2019 года.
- ↑ How we build React Native app: 7 things which save your development time. Part 2 . Дата обращения: 6 ноября 2019.
- ↑ React Native Style . Дата обращения: 24 февраля 2021. Архивировано 29 апреля 2021 года.