Эта серия статей о том, как с нуля научить Лео стать профессиональным разработчиком. Лео может быть любым из вас, желающим учиться и расти. Подать заявку здесь, это всегда будет бесплатно ♥ https://mentorleo.co
Смотрите историю проекта на медиуме
Соединение всех точек
Вы изучили компоненты React, реквизиты, состояния. Вы научились вызывать API. Как насчет того, чтобы соединить эти 2 вместе?
Мы можем видеть ярлыки (или навыки, или любое другое имя, которое вы использовали для этих компонентов) в виде флажков: если они активированы, мы будем искать этот навык в API заданий, в противном случае мы его не ищем.
Просьба о потрясающем
Забудьте о XmlHttpRequest. Это не совсем чистый способ работы с Ajax. На первой неделе я просто хотел, чтобы вы увидели, как много всего можно сделать с помощью собственного javascript, и что современные библиотеки построены на этом собственном javascript (а также поверх других библиотек).
Установите суперагент для работы с Ajax без проблем:
npm i --save superagent
(«npm i» — это псевдоним для «npm install»)
Вам также необходимо установить пакет ниже, чтобы использовать jsonp, чтобы обойти проблемы CORS, которые возникают при получении API Github:
Прочитайте документацию о том, как его использовать. Отредактируйте свой старый код, который извлекает задания с помощью суперагента;)
Сохраняйте состояние приложения
Давайте создадим что-то простое, что работает. В другой раз мы поговорим о паттернах коммуникации в React (flux, redux и т. д.).
Здесь мы хотим соединить ярлыки с JobList. Прямо сейчас вы, возможно, построили свое приложение следующим образом:
| — Корень
| — — — Аватар
| — — — Ярлыки (или Навыки или что-то еще)
| — — — Список вакансий
Для повторного использования компонент Label не должен знать о JobList. Помните, что мы сохраняли состояние меток внутри них? Что ж, теперь мы депортируем это состояние в общий родитель Labels и JobList: Root.
Теперь вам нужно удалить состояние внутри компонента Label. Активация/деактивация теперь обрабатывается реквизитом «activated», а не локальным состоянием, и Label должен вызывать обратный вызов «onToggle» вместо обновления своего состояния. Ваша очередь, обновите компонент Label (или Skills)!
Компонент «Список вакансий»
Хорошо, вы, должно быть, заметили, что я использовал компонент JobList в корневом компоненте. Пора реализовать ;)
Этот компонент принимает только один реквизит: массив строк, представляющих технологии, по которым мы хотим фильтровать предложения о работе.
Шаг 1.
Создайте свой компонент и создайте функцию с именем «fetchJobs». Эта функция не принимает аргументов, и ее цель содержится в имени функции :p.
Создайте переменную в fetchJobs, целью которой является преобразование массива навыков в строку, разделенную знаком +, где навыки указаны в нижнем регистре. Если вы не понимаете почему, прочтите API еще раз.
['HTML', 'CSS', 'Javascript'] -> 'html+css+javascript'
Если вам трудно представить себе, как это сделать, разбейте сложную проблему на более простые подзадачи:
1. ['HTML', 'CSS', 'Javascript'] -> ['html', 'css', 'javascript'] 2. ['html', 'css', 'javascript'] -> 'html+css+javascript' 3. ['HTML', 'CSS', 'Javascript'] -> 'html+css+javascript'
Шаг 2.
Нам понадобится состояние, чтобы сохранить список заданий. Иметь состояние по умолчанию, содержащее пустой массив:
getInitialState() { return { jobs: [] }; },
Используйте superagent и superagent-jsonp внутри функции «fetchJobs», чтобы вызвать API со строкой, которую вы создали на шаге 1. В обратном вызове, который вы даете суперагенту, когда запрос возвращается, обновите состояние компонента, чтобы включить список заданий. предложения, содержащиеся в результате запроса (используя this.setState({jobs: …}).
Шаг 3.
Хм, в нашем компоненте мы еще никогда не называли эту функцию «fetchJobs». Время сделать это. Добавьте это в свой компонент:
componentWillMount() { this.fetchJobs(); }, componentWillReceiveProps() { this.fetchJobs(); }
ВТФ это такие? Reflex: см. документацию ниже (RFTM: Read The Fucking Manual):
https://facebook.github.io/react/docs/react-component.html
Я не буду тебе это объяснять, ты должен понять это сам. После этого вы станете профессионалом в жизненных циклах React ;)
Шаг 4.
Ваш список вакансий будет доступен на this.state.jobs.
Рендерить это дерьмо.
Сделайте так, чтобы это выглядело великолепно.
Конец недели 2
Поздравляю ! Вы научились создавать базовые приложения React, используя современные инструменты и методы;)
На третьей неделе мы перенесем получение задания на серверную часть Node.js. Тогда у вас будет довольно хорошее общее представление о полном стеке (интерфейс и бэкэнд).
→ нажмите здесь, чтобы перейти к неделе 3, дню 1👍
Призыв к действию
Присоединяйтесь к нам ! Мы создаем сообщество мотивированных Лео, помогающих друг другу. Подать заявку здесь, это всегда будет бесплатно ♥ https://mentorleo.co