Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создания приложения на React (Гоша Дударь)↑ ⇐ ПредыдущаяСтр 15 из 15 Содержание книги
Поиск на нашем сайте
Использовать буду хуки - загружаю библиотеку глобально Ввожу create-react-app и название папки youtube. Жду пока create-react-app сгенирирует приложение, а yarn установит все зависимости. Yarn – аналог npm от facebook. Для React логично использовать yarn Для установки yarn прописываю yarn add node-sass react-router-dom boostrap axios – устанавливаю зависимости удаление папки гит узнать версию Работа над компанентами Компонент –каждый блок на сайте который содержит html css колд и имеет различный функционал В Index.js есть такая штука
Чтобы её передать сюда нужно в конце App.js прописать export default App;
import React from 'react'; import Info from './components/info'; - запись для подключения компонентов import Forms from './components/form'; - название могут быть другими import Weather from './components/weather';
// create companent class App extends React.Component { render() { return (// возвращает только первый родительский компонент, поэтому такая фишка <div> <Info/> - запись для подключения компонентов <Forms/> <Weather/> </div> // всё это трансформируется в js благодаря bable ); } }
export default App;
return – возвращает только первый найденный элемент, поэтому создаётся общий родитель и в него помещаются остальные элементы. По правилу хорошего тона основной компонент отдельно от других и они в отдельной папке Наглядный пример кода в компонентах. В остальных тоже самое import React from 'react';
class Info extends React.Component { render() { return ( <div> <h2>Погодное приложение</h2> <p>Узнайте погоду в вашем городе</p> </div> ); } }
export default Info; - для работы нужно его экспортировать
Работа с API Для API понадобится OpenWeatherMap API для погоды: https://openweathermap.org/ 1) Регистрируюсь на сайте 2) Send and copy Key 3) Post in App.js const API_KEY = 'ce5848c584fdd9f6c907e3b467244568'; 4) finded Weath API 5) Ссылка для API погоды: api.openweathermap.org/data/2.5/weather?q=Kiev,ua&appid=ВАШ_КЛЮЧ&units=metric После запроса получу json
Создаю метод для вытаскивания данных из json в компоненте App gettingWeather = async () => { const api_url = await fetch(`http://api.openweathermap.org/data/2.5/weather?q=Kiev,ua&appid=${API_KEY}&units=metric`); const data = await api_url.json(); console.log(data); } Создание формы получения данных от пользователя и работа со свойствами Из fetch(`http://api.openweathermap.org/data/2.5/weather?q=Kiev ,ua &appid=${API_KEY}&units=metric`); удалю ua – код города,выносить чисто на названии
В форме подшаманил import React from 'react';
class Form extends React.Component { render() { return ( <form> <input type='text' name='city' placeholder='Город'/> <button>Get Weather</button> </form> ); } }
export default Form;
<input/> = <input></input> не знал что так можно закрывать тег
Свойства – оч.простая штука. передача данных в компонент(переменные /методы/ и т.п) Как передать свойства? <Forms weatherMethod={ this. gettingWeather}/> weatherMethod – передаю переменную в компонент Form со значением this. gettingWeather Теперь в компаненте Form я могу обращаться к методу gettingWeather и работать с ним Для срабатывания метода при нажати нужно добавить обработчик событий onSubmit <form onSubmit – вызывается тогда когда идёт нажатие на кнопку в форме> Указываю что буду вызывать Props- свойства которые передаются в данный компонент к ним же обращаемся и обращаюсь к тому свойству которое передаю <form onSubmit={ this. props.weatherMethod}>
Сделаю чтобы страница не обнавлялась при запросе, а то данные исчезают gettingWeather = async (e) => { e.preventDefault(); - отменил стандартное поведение После если нажать на Get Weather и провалюсь в ноцоль Теперь сделаю для любого горада const city = e.target.elements.city.value; e.target –тот объект с которым я сейчас работаю, т.к метод вызывается в form я и работаю с форм.обращаюсь ко всем элементам формы.далее обращаюсь к конкретному полю по имени name.и берём его значение И вывел переменную в fetch import React from 'react'; import Info from './components/info'; import Forms from './components/form'; import Weather from './components/weather';
const API_KEY = 'ce5848c584fdd9f6c907e3b467244568'; // create companent class App extends React.Component {
gettingWeather = async (e) => { e.preventDefault(); const city = e.target.elements.city.value; const api_url = await fetch(`http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${API_KEY}&units=metric`); const data = await api_url.json(); console.log(data); } render() { return (// возвращает только первый родительский компонент, поэтому такая фишка <div> <Info/> <Forms weatherMethod={ this. gettingWeather}/> <Weather/> </div> // всё это трансформируется в js благодаря bable ); } } export default App;
import React from 'react'; class Form extends React.Component { render() { return ( <form onSubmit={ this. props.weatherMethod}> <input type='text' name='city' placeholder='Город'/> <button>Get Weather</button> </form> ); } } export default Form; Вывод погодной информации в компоненте Weather Нужно иметь некую переменную/объект куда буду сохранять все данные Для этобо есть специальные объект. Выьираю нужные данные. И прописываю в App state = {
temp: undefined, city: undefined, country: undefined, sunrise: undefined, sunset: undefined, error: undefined }
class App extends React.Component {
state = { temp: undefined, city: undefined, country: undefined, sunrise: undefined, sunset: undefined, error: undefined }
gettingWeather = async (e) => { e.preventDefault(); const city = e.target.elements.city.value; const api_url = await fetch(`http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${API_KEY}&units=metric`); const data = await api_url.json(); console.log(data);
this. setState({ присваиванию нужные значение temp: data.main.temp, и т.д }); – буду использовать this т.к {state} находиться в этом классе } метод setState – позваляет установить state Теперь предаём эти компоненты в Weather при помощи средств <Weather temp= { this. state.temp} name= { this. state.name} country= { this. state.country} country= { this. state.sunrise} country= { this. state.sunset} error= { this. state.error} /> Еслии мы их предаёт, то в компаненте Weather можем их принимать
Условие.
|
|||||||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 140; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.244.90 (0.01 с.) |