Елементи в React
Last updated
Last updated
Щоб зрозуміти базу React - почнемо з чистого листа.
Запустимо проєкт такою командою в терміналі
У теці src видалимо всі файли крім index.js і index.css і в терміналі побачимо помилки, які підсвічуються червоним. У разі коректного коду - виводиться зелене повідомлення. Уразі, якщо є компоненти, які в коді не використані, то буде повідомлення жовтого кольору.
Помилка виникла тому, що в index.js файлі ми звертаємося до компонента App.js, який тільки-но видалили. Тому видалимо весь код з index.js і збережемо. Як бачимо, немає коду - немає і помилок.
Відкриємо файл public/index.html. У ньому є такий код в тезі <body>
Весь написаний в React код буде верстатися всередині цього елемента. Але напряму із файлом index.html ми практично працювати не будемо. Весь код буде писатися у теці src і за допомогою React компілюватися у нашу верстку.
Згадаймо синтаксис створення елемента в DOM за допомогою ванільного JS.
Тепер розглянемо створення елемента за допомогою React.
Згори файлу підключають бібліотеки React і ReactDOM. Вони відповідають за створення React-елементів і роботу з DOM деревом.
У класу React є метод createElement, за допомогою якого створюється React-елемент. Назва елемента передається у лапках всередині круглих дужок.
У класу ReactDOM є метод createRoot в якому вказуємо кореневий елемент застосунку і render в якому вказують який елемент необхідно зарендерити в ньому.
Замість двох останніх рядків можна було записати так
Якщо подивитися на верстку, то вона буде ідентична як і при ванільному JS. Утім подивимося на елемент div у консолі та переконаємось, що це React-елемент.
При створенні React-елемента другим параметром можна передати об'єкт налаштувань (props). У верстку вони поміщаються як атрибути тега. 2-й і подальші параметри формуються в масив children. children - поміщається всередині тега.
У прикладі вище слова 'Hello' і 'React' ніби "склеїлися" і помістилися всередину тега <div>. Тобто вони - children, які також помістилися в масив пропсів попуч із id і class.
Тому доречно children передавати не третім і подальшими параметрами, а всередині другого параметра, як children.