от Мухаммеда Салмана
Для моего первого поста на среднем, и я хотел поделиться с вами, как я сделал новостное приложение с реактивным в родном.
Первоначально опубликовано в моем блоге.
Требования к созданию приложения:
- Основное понимание JavaScript язык .
- Установить: Node.js, реагировать родным Использование NPM Отказ
- Используемые библиотеки: момент , реагировать – родной , Реагистрационные элементы Отказ
Если вы не знакомы с этими ресурсами, не волнуйтесь – они довольно просты в использовании.
Темы, которые мы охватим в посте:
- Новости API
- Api
- Плоский список
- Потяните, чтобы обновить
- Связывание
И более … так что давайте начнем!
Новости API
Во-первых, вы должны идти вперед и подписаться на новость API, чтобы получить бесплатный Apikey ( Ваш ключ аутентификации ).
Создайте новый реагировать нативный проект и назовите его News_app (или все, что вы хотите). В каталоге проекта сделайте новую папку и назовите ее SRC Отказ В SRC Каталог, создайте папку имя IT компоненты . Таким образом, ваш каталог проекта должен выглядеть что-то подобное:
В SRC Папка, создайте новый файл под названием News.js Отказ В этом файле мы собираемся получить JSON, которая содержит заголовки из API новостей.
News.js.
Убедитесь, что вы замените your_api_key_here с вашим собственным ключом API. Для получения дополнительной информации о API новостей, перейдите на Newsapi Docs Отказ
Теперь мы объявляем Getnews Функция, которая собирается получить для нас статьи. Экспортируйте функцию, чтобы мы могли использовать его в нашем App.js файл.
App.js.
В конструкторе мы определяем начальное состояние. Статьи Будут хранить наши статьи после того, как мы их принесем их, и освежающий поможет нам в обновлении анимации. Обратите внимание, что я установил освежающий Bool правда, потому что когда мы начнем приложение, Мы хотим, чтобы анимация начать, пока мы загружаем статьи (заголовки новостей).
ComponentDidmount вызывается сразу после установки компонента. Внутри этого мы называем Fethnews метод.
componentDidMount() { this.fetchNews();}В Fethnews Мы называем getnews () который возвращает Обещание Отказ Итак, мы используем .тогда () Способ, который принимает функцию обратного вызова, а функция обратного вызова принимает аргумент ( Статьи ).
Теперь назначьте статьи в государстве в аргумент статей. Я только набрал Статьи потому что это новый синтаксис ES6, который означает {Статьи: Статьи} и мы набор освежающий к ложе, чтобы остановить спиннерскую анимацию.
fetchNews() { getNews().then( articles => this.setState({ articles, refreshing: false }) ).catch(() => this.setState({ refreshing: false }));}.catch () называется в отклоненных случаях.
HandleRefresh Метод собирается начать анимацию спина и позвонить в fethnews () метод. Мы проходим () => This.fetchnew s (), поэтому он называется сразу после назначения состояния.
handleRefresh() { this.setState({ refreshing: true },() => this.fetchNews());}Внутри метода рендера мы возвращаем Плотник составная часть. Тогда мы проходим некоторые реквизиты. данные это массив статей из это . рендеритм Делает функцию, чтобы сделать каждый элемент в массиве, но в нашем случае он просто возвращает Статья Компонент мы импортировали ранее (мы доберемся до него). И мы проходим предмет статьи в качестве опоры для использования позже в этом компоненте.
Article.js.
В SRC/Компоненты Создайте новый файл JavaScript и вызовите его Article.js.
Давайте начнем с установки двух простых библиотек, используя NPM : Реагистрационные элементы что дает нам немного предчувствие Компоненты, которые мы могли бы использовать, а момент Это будет справиться с наше время.
Установите их с помощью NPM:
npm install --save react-native-elements moment
В article.js:
Здесь много здесь много. Во-первых, мы начинаем с Разрушение Статья опора и Стили объект Определен ниже класса Отказ
Внутри метода Render мы определяем постоянное время для хранения времени, когда была опубликована статья. Мы используем момент библиотеки для преобразования даты время прошло с тех пор и мы проходим опубликован или время от сейчас Если опубликован это null Отказ
DefaultImg Присваивается URL-адрес изображения в случае, если URL-адрес изображения элемента является NULL.
Метод рендеринга возвращает TouchableenativeFeedbackback Чтобы обработать, когда пользователь нажимает карту. Мы передаем это некоторые реквизиты: Useriforground , что говорит элементу использовать передний план при отображении эффекта пульсации на карту, а onpress , который принимает функцию и выполняет его, когда пользователь нажимает карту. Мы прошли () => Связывание.openurl (U RL), который просто откроет URL для полной статьи, когда мы нажимаем на карту.
Карта занимает три реквизита: aguredtitle , который является названием, размещенным над изображением, FeaturedTitleStyle Для стиля это и изображение который является изображением статьи из статьи опоры. В противном случае, если его нулевой это будет DefaultImg Отказ
.. featuredTitle={title} featuredTitleStyle={featuredTitleStyle} image={{ uri: urlToImage || defaultImg }}..Что касается текстового элемента, он будет держать описание для статьи.
{description}
Мы добавили разделитель для отделения описания от Имя и имя источника Отказ
Ниже Разделитель у нас есть Вид который содержит имя источника и время, которое была опубликована статья.
.... {source.name.toUpperCase()} {time}
После класс Мы определили стили для этих компонентов.
Теперь, если мы запустим приложение:
Там вы идете! Исходный код для приложения доступен на Github: Здесь Не стесняйтесь вилить это.
Я надеюсь, что вы наслаждались моей статьей! Если у вас вообще есть какие-либо вопросы, не стесняйтесь комментировать или добраться до меня на Twitter И я обязательно поможет:)
? B Купи мне кофе?
Следующая история? H Как создать собственные приложения для рабочего стола с JavaScript
Оригинал: “https://www.freecodecamp.org/news/create-a-news-app-using-react-native-ced249263627/”