uz
Feedback
Free React For Beginners

Free React For Beginners

Kanalga Telegram’da o‘tish

💻 Про #React та #frontend та #веб розробку 🧑‍🎓 Для початківців і не тільки 👉 https://www.youtube.com/@reactdev

Ko'proq ko'rsatish
3 232
Obunachilar
Ma'lumot yo'q24 soatlar
-47 kunlar
-2130 kunlar
Postlar arxiv
Питання: -Так що, виходить що за цього принципу потрібну `H1` тримати біля компоненту сторінки - адже вона його використовує, правильно? Відповідь: - Ні. Загальні компоненти утворюють свій власний модуль, до якого вони належать. Фактично це як коробка з інструментами, які лежать разом. :)

👥Принцип сильної згуртованості, або High Cohesion👥 Про Low Coupling ми вже поговорили, тепер давайте доб'ємо його пару - принцип згуртованості. Насправді цей принцип дуже простий і найлегше його пояснити на наступному прикладі: 👉 Уявіть що ви придбали собі комп'ютер з доставкою додому. Приходити ви ввечері, сповнені надії нарешті повноцінно попрацювати з новим фреймворком diablo iv і бачите наступну картину: Монітор стоїть у великій кімнаті. Звідти тягнеться довжелезний шур до ванної де повішена на стіну материнка. Звідти, до кухні, йде шлейф до накопичувача, і лінія живлення яка напряму підключена до щита поза межами вашої квартири.. А коли ви нарешті сіли попрацювати (ну добре, пограти в старий добрий 1.6), то все згасло тому що ваш сусід (свята людина) побачив незнайомий йому шлейф на щиті і відключив його, про всяк випадок, бо чорт його знає що то за шнур і кому він треба. 😎 Не треба бути експертом, в чому тут проблема - замість того щоб тримати всі елементи системи в купі - хтось розкидав їх де попало ще й відкрив складові зовнішньому впливу, що призвело до втрати працездатності всієї системи. 👨‍💻В програмуванні все працює так само. Елементи, які працюють разом мають знаходитись разом - це і є принцип гуртування. Ще, бажано, показувати на ззовні лише те без чого не обійтись, але це вже інкапсуляція, про яку ми поговоримо пізніше. ❗️Принцип сильної згуртованості спрощує підтримку коду, зменшує його крихкість, збільшує стійкість до небажаних змін. Тому дуже раджу ним користуватися. До-речі, групування файлів за їх типом (всі лейаути разом, всі хуки разом, всі компоненти разом) чудово порушують цей принцип. Тож не робіть так, якщо є змога, а групуйте їх за призначенням. Бережіть себе і скоро побачимось

🌴Відповіді, та пояснення. Частина друга🌴 Другу помилку знайти було трохи важче, і полягала вона в наступному: Помилка: Неправильне перевикористання коду, а саме компоненту SuccessText. Або, якщо по-розумному, порушення принципу DRY. Проблема: Зазвичай ми намагаємось використовувати існуючий код і не копіпастити його. І все йде добре, аж поки не виявиться, що код, який ми вважали спільним є таким лише випадково. По суті - мій компонент SuccessText - це банер повідомлення що операція пройшла успішно. Чисто випадково він виглядає так само як, на разі, виглядає ціна. Але по суті вони різні і коли ми захочемо змінити ціну, SuccessText має залишитись без змін. Вирішення: Скопіювати компонент SuccessText в теку buy-product і назвати його ProductPrice Таким чином ми отримаємо незалежний компонент ще й з логічною назвою. Ось так усе просто. 🙂 👉 Для щоб не повторювати цю помилку в майбутньому ви можете використовувати ще одне просте контрольне запитання - чи збігаються підстави для змін цього коду у всіх модулях що їх використовують. Очевидно, що підстави для змін компоненту ціни і компоненту нотифікації різні, а, отже, і це різні компоненти які просто схоже виглядають. 🧐 Такі справи. Як бачите, тема не дуже проста і викладати її доступно завдання не тривіальне (не впевнений що в мене це вийшло навіть зараз, буду вдячний за відгук). Тому відео просувається повільно. А ви бережіть себе і скоро побачимось. @reactbeginners

🌲Відповіді, та пояснення. Частина перша.🌲 😎 Сподіваюся що ви добряче поламали вчора голову. Тепер давайте розбиратися. Тексту багато, тому буде дві частини. Першу помилку ви знайшли досить просто і це дуже добре. Але давайте її все ж таки розберемо для всіх: Помилка: Прямий імпорт в buy-product.page.tsx. з main.page.tsx., або, якби б я відповідав на співбесіді, порушення принципу low coupling (низької зв'язності) Проблема: Суть проблеми полягає в тому, що сторінка buy-product починає щось знати про код, до якого він не має жодного стосунку - сторінку main. На практиці, це призводить до того, що коли сторінка main буде перейменована, переміщена, відрефакторена - вам доведеться вносити зміни і у сторінку buy-product. Якщо ви випустите це з уваги - отримаєте баг. Ще одна проблема в тому, що, оскільки H1 належить до main, то розробники будуть думати що вони можуть вільно змінювати H1 відповідно до потреб main. Це означає, що рано чи пізно, заголовок на сторінці buy-product не очікувано зміниться і ми отримаємо ще один баг. Вирішення: Вирішити цю проблему просто - достатньо винести H1 в окрему теку, яка призначена виключно для коду, який можна використовувати всім, наприклад shared. Цей підхід вирішить одразу дві проблеми. По-перше, ми відв'яжемо buy-product від main, а, по-друге, факт знаходження компоненту в shared буде сигналізувати всім що змінювати цей компонент потрібно з обережністю - він загальнодоступний. 👉 А для щоб не повторювати цю помилку в майбутньому ви можете використовувати просте контрольне запитання - чи має мій компонент змінюватися, коли змінюється модуль з якого я роблю імпорт? Очевидно що зміні на main не мають впливати на інші сторінки, а от зміни в shared - мають. Друга помилка в наступному пості... П.М. Так мою пасхалку і не знайшли) Наступного разу зроблю приз за її знаходження) @reactbeginners

🌳Про структуру проекту - питання для роздумів🌳 🔨 Продовжуємо працювати над відео про структуру React проекту і в зв'язку з
🌳Про структуру проекту - питання для роздумів🌳 🔨 Продовжуємо працювати над відео про структуру React проекту і в зв'язку з цим - пропоную подумати над наступним питанням: ❓Маємо проект, який складається з двох сторінок - main.page.tsx та buy-product.page.tsx. В Main сторінці є: a) компонент H1 - який відмальовується як заголовок б) компонент SuccessText - текст зелено-ядучого кольору який показується у випадку успішного сабміту форми зворотнього звя'зку. Сторінка buy-product імпортує обидва ці компоненти і використовує їх для того щоб: а) відмалювати заголовок першого рівня б) відмалювати спеціальну ціну за товар. (приклад на скріншоті) ❓В задачі питається: які помилки я допустив з точки зору структури проекту і як їх виправити? П.М. Хтось помітив пасхалку? 😀? @reactbeginners

Колись я цей пост вже писав, але з того часу нас стало втричі більше, тож давайте познайомимось 😎 Мене звати Віталій, працюю я самі знаєте де 😁. В IT вже більше 8оми років. Можу спроектувати поганеньку базу даних, зробити посередній бекенд і нормальний фронтенд. Писав на knockout, angular.js, angular, react. 🧐 Три роки був спів викладачем для НАУ (хто був у нас в Itera, можливо бачив мене в живу). Був членом програмного комітету JsFest (там і познайомився з Бабічем) та виступав на FwDays, VinnitsyaJs, American Digital Weeks. ❤️ Люблю програмування, комп'ютерні ігри, читати, сноуборд та віндсерф. Під час війни здобув ще декілька корисних, але менш friendly навичок, чого і вам раджу. Про всяк випадок ;) 🧑‍💻 Щодо цього каналу - він не комерційний, з'явився на початку повномасштабного нападу росії на Україну щоб допомогти людям доотримати знання та знайти собі роботу. Каналу вже рік і він ще й досі живе, з чого я трохи дивуюсь та радію. Також ми тут іноді проводимо не великі збори на потреби ЗСУ, долучайтеся за можливості. 🔗 Ще в мене є лінкедин, де я іноді пишу щось корисне, а іноді свої думки стосовно того що відбувається навкруги, але без політики. Наприклад ось. ❓А хто ви? Звідки, як сюди потрапили, що вас цікавить? Пишіть, в п'ятницю складне постити гріх :)

🏎 Вчора побіжно зачепили тему вимірювань, але без подробиць, тому виправляюся 🏎 🧑‍💻Всі оптимізації швидкодії потребують в
🏎 Вчора побіжно зачепили тему вимірювань, але без подробиць, тому виправляюся 🏎 🧑‍💻Всі оптимізації швидкодії потребують вимірювань - вам потрібно контролювати що ви робите і бачити свої результати. Як це зробити: 1️⃣ Перший варіант - поставити розширення React Developer Tools і використати вкладу Profile. В результаті ви отримаєте такий графік, як на зображенні, який покаже вам скільки часу займає рендер кожного елементу. 👉 Це зручно для пошуку "дорогих" рендерів і причин перерендеру. 2️⃣ Другий варіант - використати компонент React.Profiler який приймає id та колбек в який будуть передані всі вимірювання:
 <Profiler
      id={pId}
      onRender={(_, phase, actualDuration) =>
        console.log(phase, ' ', actualDuration)
      }
  >

👉 Цей варіант стане в нагоді коли ви почнете оптимізувати конкретний компонент, щоб бачити як ваші зміни впливають на швидкодію. Також можна використати Performance API, але про нього буде в наступному дописі. @reactbeginners

🏋️‍♀️Не ускладнюйте життя з useEffect🏋️‍♀️ 😢 Ще раз переконався, що багато хто любить ускладнювати собі життя і код за допомогою useEffect, тому давайте знову повернемось до цієї теми 👀 Наприклад, маємо якийсь кастомний хук, в якому є ім'я та прізвище користувача, а нам потрібне ще й його повне ім'я. Типове і не правильне рішення - використати useEffect та проміжний стейт:
useEffect(() => {
  setFullUserName(`${fName} ${sName}`);
}, [fName, sName]);

🤨 Такий код складніше читається, має більшу вірогідність помилки та на додачу ще й не ефективний оскільки викликає додатковий рендер. Насправді, все що нам треба - це вирахувати повне ім'я прямо в самому хуці (або компоненті) const fullName =
${fName} ${sName}

👩‍🏫 Якщо дані користувача лежать в стейті, то як тільки вони зміняться - наш код буде викликаний знову і ми отримаємо нове повне ім'я. Все дуже просто і очевидно, але багато хто все одно додає зайвий effect 😊 👉 Для того, щоб не повторювати цю помилку достатньо запам'ятати, що похідні дані (ті які ми вираховуємо) потрібно не тримати в стейті, а вираховувати прямо в самій функції. А якщо ви побачите, що це займає забагато часу (і поміряєте!) - тоді вам може стати в нагоді хук useMemo Чистого вам коду, бережіть себе і скоро побачимось! @reactbeginners

💪Потихеньку повертаюся назад до роботи 💪 👓 Перше відео над яким будемо працювати - структура проекту в React, бо це дійсно
💪Потихеньку повертаюся назад до роботи 💪 👓 Перше відео над яким будемо працювати - структура проекту в React, бо це дійсно важливо, хоча і дискусійно, м'яко кажучи. 👩‍🏫 Спробую описати як я бачу зручну структуру проекту, яка більш-менш безболісно скейлиться. Скоро побачимось і бережіть себе.

Не знаю чи є хтось тут з Одеси, але тримайтеся і бережіть себе!

Next.JS та серверні компоненти тепер текстом на DOU 🔥 Для кого зручніше читати текст - виклав статтю про серверні компоненти на DOU. 👉 Запрошую до перегляду і коментарів.

Бачу вже 4ий проект який структурує проект за типом компонентів. 😢 Я думав що ця практика нарешті похована, але бачу вже четвертий проект, який намагається робити структуру наступного виду:
src/
    /components
    /layouts
    /hooks
    /context 
    /...

❗️Будь-ласка, не робіть так. Цей підхід не працює, якщо у вас більше ніж одна сторінка (або функціональний модуль). Ці теки розростаються, компоненти всередині починають хаотично залежати один від одного, ламається ліниве завантаження, складно розуміти що і як перевикористовувати. Я точно знаю про що говорю, бо я це проходив 6 років тому і прохожу зараз повторно, (бо якась веб студія вирішила що так воно краще) ✍️ Замість цього - групуйте за функціональістю. Найпростіший варіант - по сторінкам. Рахуйте що одна сторінка - один незалежний модуль. І ховайте все що можливо в середині цього модуля (окрім очевидно загальних компонентів типу button/link) 👉 Це дасть вам незалежні модулі, які легко змінювати не боючись все зламати, і очевидний пул загальних компонентів. 😈 А як ні - буду прийду до кожного у вісні і буду нити поки не переробите! П.С. Буде про це відео десь через місяць. @reactbeginners

😢 Львів, мої співчуття

Нове відео Next.JS та нові серверні компоненти вже опубліковано ❗️ Що таке серверні компоненти, навіщо вони потрібні, як їх використовувати - про все це ви дізнаєтесь з нового відео: Next.JS та серверні компоненти! 🧐 Відео вийшло: 1. Коротеньким - усього 11 хвилин, 2. Насиченим - теорія, враження і коротеньке демо 3. Не однозначним - детальніше у відео ❓А що ви думаєте з приводу серверних компонентів? @reactbeginners

5 ліцензій

Поки я сиджу і намагаюся відпочивати* до нас на канал прийшли 🇦🇺австралійці! 😎 І кажуть такі - ми тут для розробників роби
Поки я сиджу і намагаюся відпочивати* до нас на канал прийшли 🇦🇺австралійці! 😎 І кажуть такі - ми тут для розробників робимо розширення щоб допомагати їм писати усілякі гарні тести, швидко і зручно. Ну і можемо вам подарувати кілька ліцензій для ваших підписників (при чому без обмежень щодо комерційного використання). Хочете? 😅 І я такий - та звісно хочу, але ж це ще відео про тести ще робити треба... ❓І от питається в задачі - і що робить? * Якщо не Щекавиця, то у ВТ буде відео перше відео про Next.

Наступні відео протягом літа 👉Next.JS - нові серверні компоненти. Навіщо потрібні та особливості використання. 👉 З’єднуємо
Наступні відео протягом літа 👉Next.JS - нові серверні компоненти. Навіщо потрібні та особливості використання. 👉 З’єднуємо Front-End та Backend правильно. Транспорт, валідація, трансформація 👉Структура React проекту яка скейлиться П.С. Ми живі, здорові, трохи відпочиваємо, трохи плануємо. Все дуже потихеньку, але рухається.

Як бачите, тема з ППО дуже актуальна. Бережіть себе!

Обіцяне опитування - про гроші У мене залишилось трохи більше 6600 гривень з минулого збору і певний час не буде інших активних. А Сергій Бабіч збирає на ППО і якось не гарно виглядає коли гроші просто лежать замість допомагати. Що робимо?
Anonymous voting

Всім привіт, наш статус 😔 Нажаль мені потрібно взяти певну паузу. Ніхто з нас не залізний (крім ПВО), втома приходить до всі
Всім привіт, наш статус 😔 Нажаль мені потрібно взяти певну паузу. Ніхто з нас не залізний (крім ПВО), втома приходить до всіх, + останні тижні були, м'яко кажучи, не найкращими (і це я ще в умовній безпеці, а не десь там на півдні), тому я змушений взяти таку собі відпустку. ✍️ Це означає що всі плани відкладаються (і відео про серверні компоненти, і курс про Next, нажаль). Постів також буде обмаль, окрім одного маленького голосування завтра щодо залишку ваших зібраних коштів. ✉️ Писати і питати мене можна, але відповім коли відповім. Кукуха птаха вільна, відпустиш - відлетить. ❤️Дякую за те що залишаєтесь зі мною і за підтримку. Я скоро повернусь з новими відео та навчанням 💪 Бережіть себе, свою голову, своїх близьких. Все буде Україна.