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