Дізнайтеся React.js за допомогою побудови проектів - Створіть додаток з нагадуванням про день народження

Коли ви вивчаєте нову навичку, відеоуроки можуть затягнути вас лише дотепер. Багато людей сходяться на думці, що забруднити руки, будуючи проект - це шлях.

Отже, у цій серії практичних статей ми створимо не один або два, а п’ять невеликих додатків React.

Ці програми будуть варіюватися від невеликих до середніх та вимагатимуть, щоб ви самі все створили. Як ви дійсно кодуєте програму, проходите тестові кейси та обов’язково вивчаєте кожну навичку.

Готові розпочати?

Як це буде працювати

Ця стаття натхненна власним відео тут. Але замість того, щоб просто переглядати відео, вам доведеться виконувати проекти своїми руками.

Протягом цієї серії міні-блогів ви побудуєте п’ять невеликих проектів. І для кожного проекту існують деякі основні правила:

  1. Ви повинні кодувати певні (або всі) аспекти функції
  2. Ви повинні пройти задані тести на виклики
  3. Ви можете звернутися за зовнішньою допомогою. Але я б порадив спочатку витратити трохи часу на інтерфейс та інструкції. Це пов’язано з тим, що інтерфейс розроблений на основі того, як ви, мабуть, фактично проведете свій час розробником в інструментах на основі розробників.

Тільки примітка: codedamn розкручує екземпляр сервера для кожного користувача, тож для використання класної кімнати вам потрібно зареєструватися / увійти.

Якщо ви просто хочете перевірити код і пропрацювати проект самостійно, а не в класі, ви можете переглянути його на GitHub. Я зв’язав GitHub у кожному розділі нижче, щоб ви могли перейти до відповідної частини коду.

Тож давайте почнемо з першого проекту. Якщо я отримаю хороший відгук, я продовжуватиму дописки та проекти.

Як створити додаток для нагадування про день народження (проект №1)

Оскільки це наш перший проект, я буду тримати складність дуже низькою. У цьому проекті ми будемо використовувати React для відображення списку елементів даних, тобто днів народження кількох людей.

Ці дані відображатимуться із статичного джерела даних і повинні допомогти вам зрозуміти, як імпортувати та використовувати / очищати дані всередині стану. Ми працюватимемо в класі, яку я створив зі своїм проектом Codedamn. Ви можете розпочати цей клас тут.

Я настійно рекомендую заповнювати цю та інші аудиторії якомога більше самостійно. Ви можете (і повинні) використовувати цю публікацію в блозі як керівництво.

Ось що ви дізнаєтесь у цьому класі:

  1. Як виглядає базовий проект React
  2. Як завантажити дані зі статичного файлу JS
  3. Як використовувати useState для зберігання даних
  4. Як очистити змінну стану та побачити, що відображено в інтерфейсі користувача

Лабораторія 1 - Вступ до проекту

Ось посилання на цю лабораторію.

Цей перший виклик знайомить вас з проектом та його структурою. Витратьте деякий час на пошук усіх відповідних фрагментів у цьому, і, закінчивши, просто натисніть "Запустити тести", щоб пройти це завдання. Тут нічого химерного :)

Лабораторна робота 2 - Як створити контейнер з видом на день народження

Ось посилання на цю практичну лабораторію.

Ви також можете знайти файли налаштування лабораторії на GitHub тут.

Тепер, коли ви розглянули, як організована структура проекту та файли, настав час створити деякі статичні подання.

Пам’ятайте, що ви завжди можете спочатку створити власники статичних даних, а потім заповнити їх динамічними даними.

Це дуже чистий підхід до побудови динамічних компонентів, оскільки він дозволяє зробити компонент готовим перед тим, як динамічно заповнювати його даними.

У цій лабораторії вам потрібно виконати такі завдання:

  • Всередині файлу App.jsx створіть таку ієрархію HTML:
main > section.container > h3 + List
  • Підказка: Наведене абревіатура означає, що ваша структура повинна виглядати наступним чином:

  • Ви h3повинні містити текст:
0 birthdays today
  • Вашим компонентом повинен бути той List.jsxкомпонент, який імпортується вгорі.

Щоб пройти всі тести, переконайтеся, що ви виконали наступне:

  • У вашому файлі App.jsx повинен бути присутнім один елемент 'h3'
  • Ваш тег 'h3' повинен містити "0 днів народження сьогодні" (без лапок)
  • Компонент "Список" повинен бути відтворений

Ось рішення цього завдання:

import React, { useState } from 'react' import data from './data' import List from './List' function App() { // Edit your return statement here to match the instructions return (   

0 birthdays today

) } export default App

Лабораторія 3 - Як заповнити статичні дані списку

Here's the link to this lab.

You can also find the setup files of the lab on GitHub here.

We have the basic UI available to us. Let's now populate the static data from the data.js file.

This file has already been opened for you on the right side of the editor. Check out this file and see how the JSON data looks.

In this lab, you have to do the following things:

  • Inside your App.jsx file, you should now replace 0 Birthdays Today with Birthdays Today. Therefore, initially, it should show 5 Birthdays Today. Remember, the comes from the number of elements inside your data variable imported at the top.
  • Hint: You can use data.length
  • Pass the imported data variable as a prop to the List component. This prop should be called people
  • Hint:
  • In the List component, use this passed data to render just the names of the people for now. You can map over these people and display their names.

Here are 3 tests you have to pass:

  • Your App.jsx should now show "5 Birthdays Today" where "5" comes from the length of items imported at top
  • Your screen should show the names of all people in the list
  • You should use the "people" prop in the List component to pass the data and it should display the names

And here's the solution for the challenge.

App.jsx file:

import React, { useState } from 'react' import data from './data' import List from './List' function App() { return (   {/* Make change to "0" here */} 

{data.length} birthdays today

{/* pass data to list component */} ) } export default App

List.jsx file:

import React from 'react' // accept props here const List = (props) => { const { people } = props // Map over prop "people" and display only the names in any way you like return people.map((item) => { return 

{item.name}

}) } export default List

Lab 4 - How to display the new UI

Here's a link to this lab

You can also find the setup files of the lab on GitHub here.

Now that we have the names of people from the static data, let's make the UI a little bit better. You can look through all the CSS in the css files first, and then we will simply start using the CSS classes directly.

In this challenge, you only have to build up from the last challenge and create a UI inside List component.

In this lab, you have to do the following things:

  • Inside your List.jsx file, iterate over the people prop and display the following HTML structure:

NAME_OF_USER

AGE_OF_USER years

  • Make sure you replace the placeholders appropriately. Also, CSS classes in React JSX are named className, just a reminder!

Here are 4 tests you have to pass:

  • Your List component should render the "article" tag as parent
  • Your List component should render the "img" tag inside "article" tag with the correct src and alt tag
  • Your List component should render the "div > h4" inside the "article" tag with the name of the person
  • Your List component should render the "div > p" inside the "article" tag with the age of the person

And here's the solution (List.jsx file):

import React from 'react' // accept props here const List = (props) => { const { people } = props // Map over prop "people" and code the right structure return people.map((person) => { const { id, name, age, image } = person return (  

{name}

{age} years

) }) } export default List

Lab 5 - How to add a Clear All button

Here's a link to this lab

You can also find the setup files of the lab on GitHub here.

In this final lab, let's now add a “Clear” button which will clear the records and reset it to 0 birthdays. The button is already available for you, you just have to make sure it functions properly.

In this lab, you have to do the following things:

  • Create a new state variable called people
  • The initial value of this state variable should be the imported data from the top.
  • Pass this state variable now in the List component.
  • When the Clear button is pressed, empty the state variable so that no record is displayed (Hint: set it to an empty array)

And these are the tests you have to pass:

  • There should be a "Clear All" button on the screen (already done for you)
  • Initially, all records should be visible
  • When the "Clear All" button is pressed, it should remove all records from the screen

Here's the App.jsx solution file for this lab:

import React, { useState } from 'react' import data from './data' import List from './List' function App() { // create a state variable here const [people, setPeople] = useState(data) // this should clear all records function clearAllRecords() { setPeople([]) } return (   

{people.length} birthdays today

Clear All ) } export default App

And you're done! Congrats on completing a small project in React. Way to go :)

Conclusion

I hope you enjoyed this codedamn classroom. You can find many others in the React Mastery learning path on codedamn.

There are a lot of gaps to fill yet, but there's a good chance that it will get you started pretty smoothly if you're new.

Make sure you tell me how your experience was on my Twitter handle, as this will help me frame the next practice classrooms.