Некоторое время назад я написал приложение для пользователей Android/iOS. Как разработчик React, я выбрал React Native. Вот лишь несколько моих мыслей об этом и о том, как вы можете начать создавать собственное приложение прямо сейчас.
Начать
Прежде всего, мы должны инициализировать ваше приложение. Мы будем использовать Экспо.
Экспо — это фреймворк и платформа для универсальных React-приложений. Это набор инструментов и сервисов, созданных на основе React Native и нативных платформ, которые помогают разрабатывать, создавать, развертывать и быстро выполнять итерации для iOS, Android и веб-приложений на основе одной кодовой базы JavaScript/TypeScript.
Expo предоставит вам живую перезагрузку, а также различные API, которые значительно ускорят процесс разработки.
Запустите npm install — global expo-cli и сразу после этого expo init my-app.
Эти команды установят Expo CLI и инициализируют ваш первый выставочный проект. Если вы хотите разрабатывать на своем собственном устройстве, вы можете легко загрузить приложение Expo из Google Play или AppStore (в зависимости от вашей платформы). В противном случае обязательно установите Android Studio и настройте эмулятор Android.
Первый взгляд
Запустите npm start, и откроется новое окно браузера. В левой части экрана выберите один из вариантов.
Давайте взглянем на шаблонный код, созданный для нас Expo CLI.
У React-разработчика могут возникнуть вопросы: что такое компоненты «View» и «Text» и почему нет «div» и других тегов HTML? Чтобы ответить на оба вопроса, мы должны понять одну простую, но очень важную вещь: в React Native нет HTML-тегов и файлов CSS. Вместо этого вы используете компонент «Вид» для своего контейнера (представьте его как простой «div» в HTML) и «Текст» для отображения текста внутри него. Обратите внимание, что каждый текст должен быть заключен в компонент ‹Text›.
Важно знать, что компонент View может быть легко вложен в другой компонент View.
Стиль
Как видно из приведенного выше кода, в вашем компоненте App.js есть объект styles. Давайте быстро посмотрим.
Прежде всего, мы видим, что наш объект styles создается с помощью StyleSheet. Это способ создания стилей в React Native. По умолчанию React Native использует Flexbox для стилизации компонентов. Они довольно просты и похожи на React. Чтобы применить ваши стили, мы должны сделать следующее:
... <View style={styles.container}> ... </View>
Таким образом, представление будет отображаться в соответствии со стилями, указанными в объекте контейнер. Но есть и другой способ стилизовать ваш компонент: встроенный стиль.
<View style={{ flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }}> ... </View>
Обратите внимание, что это не рекомендуется способ стилизации просто потому, что он ухудшает читабельность кода. Надеюсь, вы знаете это из своего опыта работы с React.
Время практики
Пришло время увидеть React Native в действии. Чтобы упростить задачу для начинающих, давайте реализуем простую систему навигации. Окончательный результат будет таким:
Чтобы создать такое приложение, мы должны знать, что такое состояние в React. Взгляните здесь для быстрого обновления. Давайте определим наше состояние:
import React, { useState } from 'react'; ... const [isWelcomePageOpened, setWelcomePageOpened] = useState(true);
Просто, верно? Ничего нового для React-разработчика. Мы определяем состояние isWelcomePageOpened, чтобы увидеть, должна ли страница приветствия отображаться прямо сейчас. Теперь давайте определим стиль, который мы будем использовать для этого приложения.
const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, image: { width: 150, height: 50 }, text: { fontSize: 20, fontWeight: 'bold' }, button: { marginTop: 50 } });
Как видите, я определил стили для кнопки, изображения и текста. Стиль для нашего контейнера остается прежним.
Я хочу рассказать, как мы можем добавлять изображения в наши проекты, потому что это немного отличается от React. Прежде всего, импортируйте изображение из пакета «react-native».
import { ..., Image } from 'react-native';
Теперь давайте добавим наше первое изображение. Основное использование:
<Image source={ { uri: 'YOUR_IMAGE_URI' } } style={ styles.image }/> <Image/>
Пришло время замедлиться и обсудить это. Изображение имеет свойство source, что выглядит довольно странно. Мы указываем здесь URI для нашего изображения. Это может быть, например, изображение с вашего сервера. Если мы хотим получить образ из корня нашего проекта, обязательно делаем следующее:
<Image source={ require('./image.png') } style={ styles.image }/>
Сейчас это выглядит немного иначе. Вместо того, чтобы передавать объект с URI, нам требуется изображение из папки нашего проекта.
Давайте добавим простую кнопку.
import { Button, ...} from 'react-native';
Как видите, нам не нужно реализовывать собственную кнопку, потому что она есть в пакете «react-native». Самое классное в этом то, что кнопка будет выглядеть по-разному в зависимости от вашей системы. Давайте использовать его сейчас:
<Button title={ 'Navigate to another page' } style={ styles.button } onPress={ () => setWelcomePageOpened(!isWelcomePageOpened) } />
Здесь нужно объяснить только свойство onPress. В React и чистом JS у нас есть свойство onClick/onclick, но в React Native у нас есть onPress. Как обычно, это получит обратный вызов, который может легко изменить наше состояние. Теперь у нас есть переключатель состояния, и легко отобразить что-то на странице. Полный код вы найдете ниже.
Заключение
Мы создали наше самое первое приложение с React Native. Как видите, разработчику React очень легко начать создавать приложение прямо сейчас. React Native — отличный способ создавать приложения для Android и iOS, если вы являетесь разработчиком JS. Единственное, что не нравится, в основном связано с библиотекой Expo: сервер часто отключается, и разработчику приходится тратить время на перезагрузку.
Удачи!