Free React For Beginners
3.46K subscribers
231 photos
5 videos
1 file
385 links
💻 Про #React та #frontend та #веб розробку
🧑‍🎓 Для початківців і не тільки

👉 https://www.youtube.com/@reactdev
Download Telegram
Подаруночки на сьогодні ❤️
15👍6
Free React For Beginners
Photo
❤️ Сьогодні свято, а яке свято без подарунків? ❤️

І я скажу в мене їх аж чотири:

👉 Зручний та надійний рюкзак. Туди влізе і ноут і все до ноута)
👉 Фірмовий, компактний, металевий термос, який чудово підійде для кави тим, кому рано вставати.
👉 Сет носочків (5 пар) від Мавки, тієї самої яка зараз зібрала рекордну кількість глядачів з проміж усіх Українських фільмів
👉 І, також, цифрова копія другого Сталкеру.

А отримати їх не так щоб було дуже складно:

🐝 Перші три подарунки ми розіграємо під час прямого ефіру на вікторині. Хто перший дасть правильну відповідь - той і отримає подарунок!

🦄 А для того щоб прийняти участь в розіграші Сталкеру - вам просто потрібно написати пост в будь-якій соціальній мережі, дати посилання на наш Ютуб - youtube.com/@reactdev і відправити мені скріншот. Не знаєте що писати? Просто зробіть фото на фоні нашого YouTube) Копія буде розіграна серед усіх хто це зробить.

😊 Наче не складно

👉 Всіх чекаю на стрімі, сьогодні о 18:00, і не забудьте підписатися щоб не пропустити!

Зі святом нас!
🔥17👍5😁2
Про IT-курси, без прикрас

👨‍💻 Завтра, разом з Романом Савіцьким, Сергієм Бабічем та спільнотою IT-Juniors будемо робити ефір про IT-курси.

👉 Кому цікаво послухати що відбувається і як обирати курси так, щоб це принесло користь, а не просто забрало ваш час та гроші, приходьте 24 квітня о 19.00

Враховуючи що я проводжу курси, Сергій проводив, а Роман займається навчанням своїх колег (це один з його обов'язків) - має бути досить цікаво.
👍33🔥9
Продовжуємо про React

Задача № 1 - вивести на сторінку кількість рендерів даного компоненту.

Проблема: Падаємо в нескінченний перерендер

Задача № 2 - Доскролити до певного елемента в компоненті.

Проблема: Тім лід кричить що $ та querySelector бруднять його ідеальний React.

Питання - що робити?
Free React For Beginners
Photo
Всі подарунки вже відправлені, крім однієї людини.

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

00111011 00101001

Дякую всім хто прийшов на стрім!
👍14😁21
Free React For Beginners
Продовжуємо про React Задача № 1 - вивести на сторінку кількість рендерів даного компоненту. Проблема: Падаємо в нескінченний перерендер Задача № 2 - Доскролити до певного елемента в компоненті. Проблема: Тім лід кричить що $ та querySelector бруднять…
Відповідь на попередні задачі

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

1️⃣ Зміна useRef не викликає новий рендер. Дуже зручно якщо нам потрібно зберігати якусь супутню інформацію, яка не потребує перемальовувань, або викликає циклічний рендер, як у задачі № 1.

2️⃣ useRef мутується за допомогою властивості current:

const renderCounter = useRef(0);
renderCounter.current = renderCounter.current +1

Також, в useRef є ще одна корисна можливість "з коробки":

Якщо передати отриманий з ref об'єкт в ref елементу, можна отримати посилання на цей DOM елемент:

export default function App() {
const btnRef = useRef<HTMLButtonElement | null>(null);

useEffect(() => {
btnRef.current?.focus();
}, []);

return <button ref={btnRef}>Btn</button>;
}

💪 Плюс такого підходу полягає в тому, що нам не потрібно орієнтуватися на клас, або id елемента. Коли вони зміняться, в коді нічого не зламається, навіть якщо ваш колега не зверне на це увагу. Плюс React сам відповідає за те, щоб тримати там посилання на актуальну версію DOM елемента. Тільки пам'ятайте, що під час першого рендеру, самогу елементу там ще не буде, оскільки перший рендер відбувається ДО фази монтування DOM елемента в DOM дерево.

П.М. Судячи зі швидкості правильних відповідей потрібно переходити на складніші та цікавіші завдання. Кеш вам завтра принести чи що?)

@reactbeginners
👍251🔥1
Forwarded from Don't Panic Junior IT Jobs (L&Т 🇺🇦)
Genesis та НаУКМА відкрили набір на безплатну програму Software Engineering School

Курс буде корисним розробникам рівнів Junior та Middle, які прагнуть перейняти експертизу технічних команд глобальних IT-продуктів, систематизувати наявні знання та розвинути архітектурні підходи в розробці. 

На курсі вивчатимуть: 

- чистий код, який легко підтримувати; 
- архітектурні патерни, принципи та підходи до - - проєктування; 
- роботу з хмарними сервісами; 
- інфраструктуру та безпеку;  
- специфіку роботи технічних команд у продуктових компаніях.

Навчання складається з:

- лекцій;
- практичних завдань;
- live refactoring сесій;
- воркшопів у форматі Containers Immersion Day - від Amazon Web Services.

Зареєструватися можно за посиланням.

#можливості #навчання

Всі наші платформи 👉Територія джунів | Підтримати канал
🔥93
Магія залежностей package.json

Що відбувається коли ви встановлюєте нову залежність

1️⃣ В руті проекту, npm шукає спеціальний файл налаштування .npmrc. Якщо його немає або в ньому не змінена адреса реєстру, npm буде використовувати https://registry.npmjs.org в якості реєстру. І так, ви можете вказати власний, приватний реєстр.

2️⃣ Якщо бібліотека ще не встановлена і а) ви не вказали її версію вручну і б) не вказали параметри додавання, npm візьме останню версію з реєстру, додасть її до package.json додавши перед версією символ ^, а також додасть в package.lock.json

3️⃣ Символ ^ означає, що при оновленні залежностей, npm має право взяти останню версію в рамках мажорної. Так ^3.0.0 може перетворитися на 3.2239.9, але не може на 4.0.0. Це правило не розповсюджується на пакети мажорної версії 0. Ви можете використати прапорець --save-exact щоб npm зафіксував конкретну версію бібліотеки. Це називається semver, або семантичне версіонування про яке буде в наступному пості.

4️⃣ Якщо бібліотека вже встановлена, npm оновоить її використовуючи п.3. Ці зміни будуть зафіксовані як в package.json так і package-lock.json.

5️⃣ Те саме, окрім додавання в packge.json відбувається з усіма підзалежностями, відповідно до налаштувань в їх власних package.json.

6️⃣ Існує цікава ситуація, коли під час апдейту, версія залежності першого рівня не змінюється, але через "люфт" версій можуть змінитися підзалежності, . Саме тому, package-lock.json обов'якзово має бути закомічений. Він дозволяє контролювати всі залежності незважаючи на їх рівень та гарантує ідентичність залежностей у вас, вашого колеги та на проді.

7️⃣ Якщо ви встановлюєте залежності на існуючому проекті і файл package-lock.json існує - npm встановить залежності відповідно до того що лежить в package-lock.json файлі ігноруючи все що я написав вище. Якщо packge-lock не існує, всі версії будуть вираховуватися відповідно до описаних правил на основні pacakge.json після чого сформується package-lock.json. І так, є не 0 вірогідність що після цього ваш проект взагалі не запуститься (особистий досвід на одному з хакатонів України)

Висновки:

👉Package-lock.json - є обов'язковим файлом у вашому проекті, звісно якщо ви не прихильник глибокого дебагу.

@reactbeginners
👍18🔥72
🥶 Отже про semver🥶

Насправді нічого складного в ньому немає, а життя він спрощує людям дуже і дуже сильно.

✍️ Зазвичай версія програмного продукту складається з 3 (четверта то не по канону) частин:

<Major>.<Minor>.<Patch>-<postfix>, наприклад: 0.23.11 або 3.9.2-alpha. Версії, зазвичай числові, постфікси буквенно-числові. Теоретично можна emoji втулити, але я такого ще не бачив.

👉 Секція patch призначена для виправлень багів. Секція minor для нової функціональності, яка не ламає стару, а секція major призначена або для значних змін або для змін які ламають попередній функціонал, так звані breaking changes.

🧨 Breaking changes - це такі зміни, які змушують користувачів змінювати код для того, щоб він продовжував працювати. Тобто, в буквальному перекладі, ламаючі зміни.

🗒 Наприклад у нас є функція trim(line, maxSize) яка першим аргументом приймає рядок, а другим максимально допустимий розмір рядка. Якщо змінити порядок аргументів, це breaking change і ви зобов'язані змінити major версію. А якщо до другого аргументу додати значення за замовчуванням - це minor оновлення, оскільки це додаткова функціональність яка нічого не ламає.

❗️Є з цього правила одне виключення - мажорна версія 0. Вона вважається не стабільною за замовчуванням і minor оновлення має право на breaking change. Майте це на увазі.

❤️ Такий підхід, теоретично, дуже спрощує життя розробникам. Уявіть собі, що ви встановили собі React версії 18.1.3 а, через декілька тижнів ви побачили, що вже вийшов React 18.2.1. Якщо (if? if is good!(C)) розробники React притримуються політики semver, то ви одразу розумієте, що можете безпечно оновити залежність, все буде працювати як і до того плюс ви отримаєте нову функціональність та багфікси. Дуже зручно.

Але є одне але - не всі притримаються такої політики. Тому найкращий спосіб працювати з semver наступним чином:

1️⃣ Коли ми пишемо власний код - ми завжди притримуємось семверу. Це не важко і робить користування нашим кодом зручнішим і безпечнішим для інших. Такий от вклад в ком'юніті.

2️⃣ Коли ми використовуємо чужий код - ми перевіряємо чи дотримуються розробник semver (React -так)

Сподіваюся було корисно і будете підтримувати semver, так само як і я.

@reactbeginners

П.М. Підготовка до відео з Next нарешті завершена, так що відео вже не за горами!
147👍5
А ось і Next.js

🎉 Нарешті виклав довгообіцяне відео про Next.JS. Хотів вкластися в 15 хвилин, але не вийшло.

У відео буде:
👉 Відмінності Next.JS і React.
👉 Можливості (не всі) Next.JS
👉 Чого в Next.JS немає.

🧑‍💻 І 10 хвилин практики під час якої я покажу як створювати сторінки, як створювати API ендпоінти, як це зв'язати до купи і як працює серверний рендерінг.

Вдячний за поширення та коментарі!

@reactbeginners
👍43🔥22❤‍🔥51
🎉Next.JS оновився до версії 13.4!

Вчора, 04.05, Next випустив довгоочікуване оновлення в якому, зокрема:

1️⃣ Новий роутер з більш зручною підтримкою layout
2️⃣ Серверні компоненти
3️⃣ Спрощене отримання даних
4️⃣ Тека App замість src

Сідаю готувати нове відео, бо зміни там і цікаві і значні.

Дякую AmelianceSkyMusic за наводку!
🔥32👍9
✍️Не функціональні вимоги до нового проекту та наслідки✍️

У кожному проекті є функціональні вимоги - що має робити ваш застосунок, і не функціональні вимоги - як він має їх робити.

Наприклад: як швидко має працювати ваш веб застосунок? На яких екранах? На яких браузерах? Скількома мовами? Що з доступністю? Чи важливе SEO?

І на кожне з цих питань має бути дана відповідь ще до початку проекту, тому що:

1️⃣ Не функціональні вимоги складають значний обсяг роботи, який "втиснути" під кінець буде просто не реально.

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

❗️Тому всі ці моменти ви обов'язково маєте проговорити з клієнтом і зафіксувати! його рішення. Інакше потім будуть проблеми на етапі прийняття робіт і оплати.

А мій список з коментарями можна подивитись ось тут

І так, це не питання рівня початківців, але ви зростаєте, тож скоро це стане вам у нагоді.

@reactbeginners
👍228💯2❤‍🔥1
😈Ей, хформошльопи! 😈

Звучить образливо, правда? Але часом, нас, фронтендщиків дійсно так називають. Подумаєш, що там такого складного - кинути форму, кілька полів, вбудовану валідацію, action на бекенд та й усе. Форма готова, го смузі, я створив.

🧐Але, якщо подивитись на список не функціональних вимог до проекту, все стає трошечки складніше. Навіть не трошечки, а суттєво складніше. І ось тут то і криється диявол. Ті, хто називає фронтів формошльопами, просто не розуміють сучасну складність фронт-енд проекту.

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

😎Так що коли хтось буде казати що ми прості формошльопи, згадайте перелік не функціональних вимог, лагідно йому усміхніться і додайте х1.5 до ціни ваших послуг наступного разу. А сперечатися не треба, навчання інших не ваші проблеми.
@reactbeginners
👍32🔥8
🗞У мене є для вас кілька новин і одне прохання 🗞

📰Новини:

1️⃣ Відео про новий Next.JS в процесі. Є шанс що буде ввечері вівторка або середи.

2️⃣ 22 травня у нас буде внутрішнє обговорення цікавої теми - Summer School 23. Детальніше про це вже після 22 травня, є надія на новий курс, але не зовсім з React-у 😉

3️⃣ На наступному тижні буде також воркшоп про пет проекти для невеличкої групи. Орієнтовно в середу ввечері. Реєстрація і подробиці буде в понеділок.

⭐️І прохання:

В понеділок будемо відкривати один дуже цікавий збір на східний напрямок - вам сподобається. Всі домовленості є, залишається питання оплати. Тож, у кого є можливість, збережіть трохи грошей до понеділка. Навіть 10 гривень будуть дуже в нагоді. Подробиці також в понеділок.

Всім тихих вихідних, бережіть себе!
👍4410❤‍🔥6🔥3
🛬На довгі руки (10 км) та на день народження

👉Відкриваю збір на дрони для наших хлопців на сході. Дрони це не прості - вони можуть нести до 2кг не дуже корисного для здоров'я навантаження на відстань до 10км. Фактично це мікроарта керована оператором. Дуже ефективне рішення яке чудово працює по живій силі і по не броньованій техніці. А усілякі антенки це просто щастя

🔧Збирають їх у нас, в Києві і я вже домовився за їх виготовлення. Ціна однієї такої пташки - 24_000 гривень. Це не мало, але користі з них реально дуже і дуже багато. Особливо якщо пощастить натрапити на якусь техніку. Ціна може окупитись багатократно

💰Той, хто задонатить найбільшу суму - отримає можливість вказати напис на дроні фарбою або гравіюванням. Збір буде відкритий до кінця цього тижня

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

Я, звичайно, теж в ділі!
Монобанк
4731185629296887

38 058 /48_000/1000 гривень - 6 людей
👍20🔥9
❤️Воркшопчик про пет проекти❤️

🐕 Як і обіцяв - в середу,17/05, о 19:00, відбудеться мікроворкшоп про пет проекти. Орієнтуйтеся десь до години часу.

👉 Поговоримо про те, що таке пет проекти, як обирати тему проекту, і про типові помилки.

🗒 Для участі - напишіть мені в особисті. Вартість - будь-яка сума на ваш вибір від 50 гривень, яка автоматично піде на збір на дрони.

Група обмежена десятьма учасниками, щоб всі могли поспілкуватися.

Бережіть себе!
👍17