💻 Про #React та #frontend та #веб розробку
🧑🎓 Для початківців і не тільки
👉 https://www.youtube.com/@reactdev
Post #341
1.92K
FR @reactbeginners
Showing posts older than #342 · Back to latest

Free React For Beginners 👥Принцип сильної згуртованості, або High Cohesion👥 Про Low Coupling ми вже поговорили, тепер давайте доб'ємо його пару - принцип згуртованості. Насправді цей принцип дуже простий і найлегше його пояснити на наступному прикладі: 👉 Уявіть що ви придбали собі…
H1 тримати біля компоненту сторінки - адже вона його використовує, правильно?Free React For Beginners 🌲Відповіді та пояснення. Частина перша.🌲 😎 Сподіваюся що ви добряче поламали вчора голову. Тепер давайте розбиратися. Тексту багато, тому буде дві частини. Першу помилку ви знайшли досить просто і це дуже добре. Але давайте її все ж таки розберемо для всіх:…
SuccessText - це банер повідомлення що операція пройшла успішно. Чисто випадково він виглядає так само як, на разі, виглядає ціна. Але по суті вони різні і коли ми захочемо змінити ціну, SuccessText має залишитись без змін.SuccessText в теку buy-product і назвати його ProductPrice. Таким чином ми отримаємо незалежний компонент ще й з логічною назвою. Ось так усе просто. 🙂Free React For Beginners 🌳Про структуру проекту - питання для роздумів🌳 🔨 Продовжуємо працювати над відео про структуру React проекту і в зв'язку з цим - пропоную подумати над наступним питанням: ❓Маємо проект, який складається з двох сторінок - main.page.tsx та buy-product.page.tsx.…
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 - мають.
main.page.tsx та buy-product.page.tsx. В Main сторінці є: H1 - який відмальовується як заголовокbuy-product імпортує обидва ці компоненти і використовує їх для того щоб:
<Profiler👉 Цей варіант стане в нагоді коли ви почнете оптимізувати конкретний компонент, щоб бачити як ваші зміни впливають на швидкодію.
id={pId}
onRender={(_, phase, actualDuration) =>
console.log(phase, ' ', actualDuration)
}
>
useEffect та проміжний стейт:useEffect(() => {
setFullUserName(`${fName} ${sName}`);
}, [fName, sName]);
🤨 Такий код складніше читається, має більшу вірогідність помилки та на додачу ще й не ефективний оскільки викликає додатковий рендер.${fName} ${sName}
👩🏫 Якщо дані користувача лежать в стейті, то як тільки вони зміняться - наш код буде викликаний знову і ми отримаємо нове повне ім'я. Все дуже просто і очевидно, але багато хто все одно додає зайвий effect 😊useMemo
Чистого вам коду, бережіть себе і скоро побачимось!
Free React For Beginners Нове відео Next.JS та нові серверні компоненти вже опубліковано ❗️ Що таке серверні компоненти, навіщо вони потрібні, як їх використовувати - про все це ви дізнаєтесь з нового відео: Next.JS та серверні компоненти! 🧐 Відео вийшло: 1. Коротеньким - усього…
src/
/components
/layouts
/hooks
/context
/...
❗️Будь-ласка, не робіть так. Цей підхід не працює, якщо у вас більше ніж одна сторінка (або функціональний модуль). Ці теки розростаються, компоненти всередині починають хаотично залежати один від одного, ламається ліниве завантаження, складно розуміти що і як перевикористовувати. Я точно знаю про що говорю, бо я це проходив 6 років тому і прохожу зараз повторно, (бо якась веб студія вирішила що так воно краще)
