React Native позволяет создавать мобильные приложения, используя только JavaScript. Он использует тот же дизайн, что и React, что позволяет вам составлять богатый мобильный пользовательский интерфейс из декларативных компонентов.
React Native использует те же фундаментальные строительные блоки пользовательского интерфейса, что и обычные приложения для iOS и Android. Вы просто соединяете эти строительные блоки, используя JavaScript и React.
Для начала нам потребуется установить в нашей системе следующее.
- Node.js
- НПМ
- Телефон или эмулятор: Xcode для MAC или Geny-motion для Android
Настройка
Мы будем использовать приложение Create-react-native-app, так как его очень легко настроить.
Откройте свой Терминал (утилита командной строки), введите:
npm install -g create-react-native-app
Приведенная выше команда устанавливает приложение create-react-native-app глобально на ваш компьютер.
Мы будем использовать Expo для быстрой отладки. Подойдите к своему терминалу и введите:
npm install -g expo
Теперь у нас все настроено. Пора создавать наше первое мобильное приложение.
В желаемом каталоге выполните следующую команду в своем терминале

create-react-native-app todo cd todo
Теперь у нас настроено наше приложение todo. Откройте приложение todo в своем любимом текстовом редакторе.

Введите команду ниже, чтобы запустить ваше приложение. Я буду использовать встроенный терминал VS-code
npm start
Вы увидите что-то вроде этого

Если на вашем телефоне установлено приложение expo, вам следует открыть приложение expo на своем телефоне и отсканировать QR-код. Это загрузит приложение на ваш телефон. Если нет, вы можете нажать a в приглашении для открытия в эмуляторе Android или i для открытия в эмуляторе IOS. Мы будем отлаживать эмулятор IOS, поэтому я нажимаю в командной строке.
Это открывается, и у нас есть что-то вроде этого

Теперь у нас запущено наше приложение. Мы будем использовать native-base и moment.
NativeBase - фреймворк для разработки мобильных приложений; создает слой поверх React Native, который предоставляет вам базовый набор компонентов для разработки мобильных приложений, который помогает вам разрабатывать приложения мирового класса на нативных платформах.
Момент анализирует, проверяет, изменяет и отображает дату и время в JavaScript.
В вашем терминале введите следующее, чтобы установить его
npm i native-base moment --save
Нам нужно добавить в наш проект пакеты native-base и moment. Чтобы добавить пакет в свой проект, сделайте следующее
import { Container, Header, Title, Content, Icon, button, Card, CardItem, Text, Body, Left, Right, IconNB, Footer, } from "native-base";
import moment from 'moment';
позволяет заранее определить некоторое начальное значение, чтобы нашему приложению было что показать. Мы будем хранить их в том, что мы называем состоянием. Состояние - это объект javascript, содержащий информацию. Мы определяем так:
this.state = {
text: '',
data: [
'Linux', 'Mazino', 'Karosi', 'IK'
]}
Нам потребуется создать две функции: одну для добавления данных, а другую - для удаления данных.
Добавить функцию данных
add = (text) => {
let notEmpty = text.trim().length > 0;
if (notEmpty) {
this.setState(
prevState => {
let { data } = prevState;
return {
data: data.concat(text),
text: ""
};
});
}
}
Функция удаления данных
remove = (i) => {
this.setState(
prevState => {
let data = prevState.data.slice();
data.splice(i, 1);
return { data };
});
}
Нам также нужно будет создать еще одну функцию, которая запускает и предупреждает
showForm = () => {
AlertIOS.prompt(
'Enter Text',
null,
text => this.add(text) );
}
Мы будем использовать Flatlist, поддерживающий реакцию, для эффективной прокрутки и перечисления данных. Мы будем обертывать наши данные в компоненте Flatlist следующим образом.
<FlatList
data={this.state.data}
renderItem={({ item, index }) =>
<Card key={index}>
<CardItem key={index} style={{ height: 50 }}>
<Body>
<Text >
{item}
</Text>
</Body>
<Right>
<TouchableOpacity
style={{ alignItems: 'center',
justifyContent: 'center',
padding: 5,
borderRadius: 5,
borderColor: '#32CD32' }}
onPress={() => this.remove(index)}>
<FontAwesome name="minus" size={10} color='#32CD32' />
</TouchableOpacity >
</Right>
</CardItem>
</Card>
}
keyExtractor={item => item.toString()}
/>
Мы хотели бы импортировать знаки + и -. Мы можем сделать это, импортировав их из векторных иконок экспо, как показано ниже.
import { FontAwesome } from '@expo/vector-icons'
Теперь у нас есть готовое и полностью работающее приложение.

Вы можете добавить новые данные, нажав кнопку.
если вы хотите создать свое приложение для производства, вы можете следовать этому руководству
Https://docs.expo.io/versions/latest/distribution/building-standalone-apps
Вы можете клонировать или скачать репозиторий по адресу https://github.com/linux08/react_native_todoApp