Tiit Riisalo

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);

См. также

Примечания

  1. React Native: Bringing modern web techniques to mobile. Дата обращения: 29 апреля 2021. Архивировано 8 августа 2019 года.
  2. Release 0.78.0 — 2025.
  3. Chapter 1. What Is React Native? oreilly.com. O’Reilly Media, Inc.. Дата обращения: 30 июля 2020. Архивировано 29 апреля 2021 года.
  4. Android Release for React Native. Дата обращения: 29 апреля 2021. Архивировано 8 марта 2021 года.
  5. Building For TV Devices · React Native (англ.). reactnative.dev. Дата обращения: 2 октября 2020. Архивировано 30 июня 2020 года.
  6. React Native for Windows + macOS · Build native Windows & macOS apps with Javascript and React. microsoft.github.io. Дата обращения: 2 октября 2020. Архивировано 4 октября 2020 года.
  7. React Native for Apple TV (амер. англ.). React Native for Apple TV. Дата обращения: 2 октября 2020. Архивировано из оригинала 21 сентября 2020 года.
  8. React Native for Web. Дата обращения: 6 ноября 2019. Архивировано 5 декабря 2019 года.
  9. Windows Apps Team. React Native on the Universal Windows Platform. blogs.windows.com (13 апреля 2016). Дата обращения: 6 ноября 2016. Архивировано 7 ноября 2016 года.
  10. Out-of-Tree Platforms. reactnative.dev. Facebook, Inc.. Дата обращения: 30 июля 2020. Архивировано 1 июля 2020 года.
  11. Bridging in React Native (14 октября 2015). Дата обращения: 16 января 2018. Архивировано 9 мая 2021 года.
  12. React Native vs Flutter: Which Cross-Platform Framework is Better? Дата обращения: 6 ноября 2019. Архивировано из оригинала 14 мая 2019 года.
  13. How we build React Native app: 7 things which save your development time. Part 2. Дата обращения: 6 ноября 2019.
  14. React Native Style. Дата обращения: 24 февраля 2021. Архивировано 29 апреля 2021 года.
No tags for this post.