🔥 Дайджест полезных материалов из мира : React за неделю
Почитать:
— Создатель Ruby on Rails: «Turbo 8 отказывается от TypeScript»
— Как отправлять пользовательский интерфейс по API
— Проблема код-ревью: ESLint — больше, чем просто «extend»
— Бот-сказочник, или как генерировать истории с помощью ChatGPT и Telegram
— 9 лучших консольных файловых менеджеров Linux
— Создаём с нуля своё BIM-приложение для просмотра моделей IFC формата в браузере на основе open-source библиотеки IFC.js
— Обертка для indexedDB / localStorage /…
— Как грамотный подход аналитиков может сэкономить бюджет компании за счет изменения подхода к реализации проекта
— Ускорение в 30 раз — requestIdleCallback
— Повышаем продуктивность разработки: магия общей ESLint конфигурации
— Создание приложения для распознавания текста с изображений и аудиофайлов
Почитать:
— Bun 1.0 got released, Bun Packager Manager is 10x faster then yarn
— Node.js 20.6.0: Say Goodbye to 'dotenv'
— How to resolve the error "Unable to validate properties of null value"?
— Exploring React: Power in Structure
— Flatiron - Phase 2
— How to convert and migrate your project from TypeScript to JavaScript
— React Server Components and Server-Side Rendering: Supercharge Your Web Performance
— How can I enhance my website's performance in Lighthouse?
— React error: Too many re-renders. Why am I getting these errors?
— Chat-Application
Посмотреть:
🌐 HTMX заменит Frontend?! WTF? (⏱ 12:12)
🌐 5+ CSS Features That Will Change How You Code (⏱ 17:58)
🌐 NEW Way To Create Variables In JavaScript (⏱ 01:00)
Хорошего дня!
@react_js
Почитать:
— Создатель Ruby on Rails: «Turbo 8 отказывается от TypeScript»
— Как отправлять пользовательский интерфейс по API
— Проблема код-ревью: ESLint — больше, чем просто «extend»
— Бот-сказочник, или как генерировать истории с помощью ChatGPT и Telegram
— 9 лучших консольных файловых менеджеров Linux
— Создаём с нуля своё BIM-приложение для просмотра моделей IFC формата в браузере на основе open-source библиотеки IFC.js
— Обертка для indexedDB / localStorage /…
— Как грамотный подход аналитиков может сэкономить бюджет компании за счет изменения подхода к реализации проекта
— Ускорение в 30 раз — requestIdleCallback
— Повышаем продуктивность разработки: магия общей ESLint конфигурации
— Создание приложения для распознавания текста с изображений и аудиофайлов
Почитать:
— Bun 1.0 got released, Bun Packager Manager is 10x faster then yarn
— Node.js 20.6.0: Say Goodbye to 'dotenv'
— How to resolve the error "Unable to validate properties of null value"?
— Exploring React: Power in Structure
— Flatiron - Phase 2
— How to convert and migrate your project from TypeScript to JavaScript
— React Server Components and Server-Side Rendering: Supercharge Your Web Performance
— How can I enhance my website's performance in Lighthouse?
— React error: Too many re-renders. Why am I getting these errors?
— Chat-Application
Посмотреть:
🌐 HTMX заменит Frontend?! WTF? (⏱ 12:12)
🌐 5+ CSS Features That Will Change How You Code (⏱ 17:58)
🌐 NEW Way To Create Variables In JavaScript (⏱ 01:00)
Хорошего дня!
@react_js
👍8❤2❤🔥1🔥1
Замыкания — пожалуй, одна из самых пугающих концепций JavaScript. Даже всезнающий ChatGPT скажет вам это. Во всяком случае, это одна из самых скрытых особенностей языка.
Вы используете замыкания, когда пишите какой-либо React-код, чаще всего даже не осознавая этого. Но в конечном итоге от этой фичи никуда не деться: чтобы разрабатывать сложные и производительные React-приложения, придется овладеть ею.
Попробуем проникнуть в очередную тайну JavaScript-кода, чтобы выяснить:
Предупреждение: если вы никогда не сталкивались с замыканиями в React, эта статья может взорвать ваш мозг. Рекомендую запастись достаточным количеством шоколада, чтобы стимулировать клетки мозга во время чтения.
Представьте, что вы реализуете форму с несколькими полями ввода. Одно из полей представляет собой очень тяжелый компонент из какой-то внешней библиотеки. У вас нет доступа к его внутренним элементам, поэтому вы не можете устранить проблемы с его производительностью. Но этот компонент очень нужен в форме, поэтому вы решили обернуть его в React.memo, чтобы минимизировать повторные рендеринги при изменении состояния формы. Как-то так:
const HeavyComponentMemo = React.memo(HeavyComponent);
const Form = () => {
const [value, setValue] = useState();
return (
<>
<input
type="text"
value={value}
onChange={(e) => setValue(e.target.value)}
/>
<HeavyComponentMemo />
</>
);
};
Пока все хорошо. Тяжелый компонент принимает только одно строковое свойство, например title, и коллбэк onClick. Это происходит при нажатии кнопки “done” (“готово”) внутри компонента. Отправить данные формы также довольно просто: достаточно передать title и onClick.
const HeavyComponentMemo = React.memo(HeavyComponent);
const Form = () => {
const [value, setValue] = useState();
const onClick = () => {
// сюда передаем данные формы
console.log(value);
};
return (
<>
<input
type="text"
value={value}
onChange={(e) => setValue(e.target.value)}
/>
<HeavyComponentMemo
title="Welcome to the form"
onClick={onClick}
/>
</>
);
};
А вот теперь перед вами встает дилемма. Как известно, каждое свойство компонента, обернутое в React.memo, должно быть либо примитивным значением, либо постоянным между повторными рендерами. В противном случае мемоизация не сработает. Поэтому технически нужно обернуть onClick в useCallback:
const onClick = useCallback(() => {
// здесь передаем данные
}, []);
Но, как известно, хук useCallback должен иметь все зависимости, объявленные в его массиве зависимостей. Поэтому, чтобы отправить данные формы в компонент, нужно объявить эти данные как зависимость:
const onClick = useCallback(() => {
// сюда подаются данные
console.log(value);
// добавление значения к зависимости
}, [value]);
Дилемма заключается в следующем: даже если onClick мемоизирован, он все равно меняется каждый раз, когда кто-то набирает ввод. Поэтому оптимизация производительности бесполезна.
@react_js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥6❤4
По ссылке вы найдёте подборку шпаргалок для разработчиков, которые содержат основные синтаксические конструкции и команды для работы с различными технологиями и языками программирования. Шпаргалки по
CSS Flexbox, Grid,
React, Git, Node.js, Django
и не только ждут вас тут:https://dev.to/ishratumar/15-must-have-cheatsheets-for-developers-1n92
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
DEV Community
15 Must-Have Cheatsheets for Developers🚀
As web programming technologies evolve rapidly, we have to learn a lot of new stuff. Some languages...
👍12❤2🔥2
1. Framer AI
возможность не только создавать отличные сайты с помощью ИИ, но и редактировать их так же, как файл Figma.
2. Durable
идеально подходит для тех, кому нужен деловой или профессиональный сайт. По моим наблюдениям, его результаты даже лучше, чем у Framer. Всего несколько настроек — и сайт готов к работе.
3. 10Web
представьте, что используете ИИ для создания сайта на WordPress, а затем настраиваете его с помощью редактора Elementor. А знаете, что самое замечательное в этом инструменте? Он синхронизируется с WordPress, на котором работает почти половина всех сайтов.
4. Dora AI
один из лидеров по внедрению искусственного интеллекта в создание сайтов. Он еще не выпущен, но, судя по промо-роликам, довольно интересен.
5. Wix AI
пожалуй, самый простой инструмент с ИИ-функциями, который я использовал. С ним можно запустить сайт всего за день. К тому же он очень выгоден для кошелька, и в него добавлено много новых классных ИИ-функций, таких как создание текста и изображений, автоматическое удаление фона и многое другое.
6. Bookmark
идеальный помощник для создания бизнес-сайтов. Он помогает с SEO-оптимизацией, предлагает варианты онлайн-продаж, предоставляет большой объем памяти и даже детальную аналитику.
7. Kleap
не только создаст сайт с помощью ИИ, но и поможет подобрать наиболее подходящие слова и картинки. Кроме того, он позволит отслеживать аналитику и отлично смотрится на телефонах.
8. Hocoos
можно за несколько минут создать потрясающий сайт, просто ответив на 8 вопросов о своем бизнесе. Это немного сложнее, чем просто написать промпт, но в результате ИИ создаст подробный и индивидуальный сайт.
9. Jimbo
задаст вам несколько вопросов о предпочитаемом стиле и целях — а затем на экране появится сайт. Jimbo похож на Wix. Он предложит выбрать внешний вид сайта, например цвета и кнопки. Правда, он не так богат возможностями, как некоторые другие ИИ-конструкторы, зато это может упростить вам работу.
10. Unbounce
известная платформа для разработки лендингов, использующая искусственный интеллект для создания страниц, написания копий и даже оптимизации трафика.
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2👎1🔥1
🔥 Дайджест полезных материалов из мира React за неделю
Почитать:
— Натальная травматология фронтенда S1 E1-14
— Митапы PiterJS вернулись
— Rematch — Redux без шаблонного кода
— Утечки памяти в SSR: причины, поиск, устранение
— Скрытие POI за зданиями
— Что нового в Chrome 117?
— Видеоредактор, работа с видео и зачем там Canvas
— Kysely.js типизированный sql builder
— Измерение размеров объектов на фотографии
— 10 'Aha' Moments: Navigating React's New Documentation!
— Web workers in ReactJs
— 🚀Learn Next.js 13 Within 2 Hours🚀
— 🚀Mastering Performance Optimisation in React Applications🚀
— How to Protect Routes With React Router v6 (Old APIs)
— React-query with React and typescript
— The Best ESLint Rules for React Projects
— Next Meal
— Building a Real-time Chat Application with React and WebSocket
— create-t3-app for vite and react
Посмотреть:
🌐 Learning To Code Is Easy (⏱ 08:59)
🌐 NEW React Hooks Saves 1K+ Lines Of Code (⏱ 01:00)
Хорошего дня!
@react_tg
Почитать:
— Натальная травматология фронтенда S1 E1-14
— Митапы PiterJS вернулись
— Rematch — Redux без шаблонного кода
— Утечки памяти в SSR: причины, поиск, устранение
— Скрытие POI за зданиями
— Что нового в Chrome 117?
— Видеоредактор, работа с видео и зачем там Canvas
— Kysely.js типизированный sql builder
— Измерение размеров объектов на фотографии
— 10 'Aha' Moments: Navigating React's New Documentation!
— Web workers in ReactJs
— 🚀Learn Next.js 13 Within 2 Hours🚀
— 🚀Mastering Performance Optimisation in React Applications🚀
— How to Protect Routes With React Router v6 (Old APIs)
— React-query with React and typescript
— The Best ESLint Rules for React Projects
— Next Meal
— Building a Real-time Chat Application with React and WebSocket
— create-t3-app for vite and react
Посмотреть:
🌐 Learning To Code Is Easy (⏱ 08:59)
🌐 NEW React Hooks Saves 1K+ Lines Of Code (⏱ 01:00)
Хорошего дня!
@react_tg
👍8❤4🔥2
https://react.dev
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥3👌2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
https://codepen.io/gvissing/pen/XWVpjJd
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3🔥2
🔥 Дайджест полезных материалов из мира React за неделю
Почитать:
— Минуты и часы не нужны
— Создание мини игр и анимации в Online редакторе Collagen_2
— Event Loop в деталях
— Создание конвертера JSON в Typescript с помощью React, NodeJS и ChatGPT
— Web Accessibility в рассказе «A11Y от 0 до NaN»
— Создаем мини-игру с капельным эффектом и движущимися кружками. Часть 2. Финал
— JavaScript. WebRTC. Соединение браузеров напрямую без сервера, peer-to-peer
— Веб-компоненты в 2023: нужно поговорить
— Подружим Sentry и Mattermost быстро и просто через адаптер
— Генерация BDD тестов с помощью ChatGPT и запуск их через Playwright
— Building A Simple React Login Form: A Step By Step Guide.
— How To Quickly Fix Production Errors Along With CORS Error
— react learning for beginner
— What and Why to use HOCs in React
— Zustand State Management
— Case Sensitivity with `localeCompare` in JavaScript
— Build a Video Call App with Astro and ReactJS
— My first WebDev project - My Personal Portfolio.
— Dev Container for React Native with Expo
— Nextjs Adsense Implementation
Посмотреть:
🌐 Экосистема React.js 2023 (⏱ 12:45)
🌐 The Best React State Management Solution Has Been There All Along (⏱ 05:38)
🌐 This CSS Feature Replaces CSS-In-JS (⏱ 01:00)
Хорошего дня!
@react_tg
Почитать:
— Минуты и часы не нужны
— Создание мини игр и анимации в Online редакторе Collagen_2
— Event Loop в деталях
— Создание конвертера JSON в Typescript с помощью React, NodeJS и ChatGPT
— Web Accessibility в рассказе «A11Y от 0 до NaN»
— Создаем мини-игру с капельным эффектом и движущимися кружками. Часть 2. Финал
— JavaScript. WebRTC. Соединение браузеров напрямую без сервера, peer-to-peer
— Веб-компоненты в 2023: нужно поговорить
— Подружим Sentry и Mattermost быстро и просто через адаптер
— Генерация BDD тестов с помощью ChatGPT и запуск их через Playwright
— Building A Simple React Login Form: A Step By Step Guide.
— How To Quickly Fix Production Errors Along With CORS Error
— react learning for beginner
— What and Why to use HOCs in React
— Zustand State Management
— Case Sensitivity with `localeCompare` in JavaScript
— Build a Video Call App with Astro and ReactJS
— My first WebDev project - My Personal Portfolio.
— Dev Container for React Native with Expo
— Nextjs Adsense Implementation
Посмотреть:
🌐 Экосистема React.js 2023 (⏱ 12:45)
🌐 The Best React State Management Solution Has Been There All Along (⏱ 05:38)
🌐 This CSS Feature Replaces CSS-In-JS (⏱ 01:00)
Хорошего дня!
@react_tg
👍11🔥3❤1
⚡ ElectricSQL
Сегодня вышла новая версию ElectricSQL.
ElectricSQL - это опенсорс платформа для локальной разработки, позволяющая легко создавать высококачественные современные приложения с мгновенной реактивностью, многопользовательской совместной работой в реальном времени и бесконфликтной поддержкой автономной работы.
Local-first - это новая парадигма разработки, при которой код приложения напрямую обращается к встроенной локальной базе данных, а данные синхронизируются в фоновом режиме посредством активной репликации базы данных. Поскольку код приложения обращается непосредственно к локальной базе данных, приложения работают мгновенно. Данные синхронизируются в фоновом режиме с помощью активной репликации.
• Github
• Документация
@react_tg
Сегодня вышла новая версию ElectricSQL.
ElectricSQL - это опенсорс платформа для локальной разработки, позволяющая легко создавать высококачественные современные приложения с мгновенной реактивностью, многопользовательской совместной работой в реальном времени и бесконфликтной поддержкой автономной работы.
Local-first - это новая парадигма разработки, при которой код приложения напрямую обращается к встроенной локальной базе данных, а данные синхронизируются в фоновом режиме посредством активной репликации базы данных. Поскольку код приложения обращается непосредственно к локальной базе данных, приложения работают мгновенно. Данные синхронизируются в фоновом режиме с помощью активной репликации.
• Github
• Документация
@react_tg
👍14🔥7🤔5❤3
⚡ BFEdevSolutions
Полезный проект с готовыми решениями frontend задач с bigfrontend.dev
Практические кейсы, алгоритмические задачи, задачи на верстку с объяснением.
• JavaScript
• React
• JavaScript квизы
• TypeScript задачи
• CSS задачи
@react_tg
Полезный проект с готовыми решениями frontend задач с bigfrontend.dev
Практические кейсы, алгоритмические задачи, задачи на верстку с объяснением.
• JavaScript
• React
• JavaScript квизы
• TypeScript задачи
• CSS задачи
@react_tg
🔥13👍4❤3
🌐 WebAssembly: секретное оружие в разработке высокооптимизированных и безопасных веб-приложений
Технологии в разработке ПО быстро развиваются. Появляются инструменты, помогающие создавать высокопроизводительные приложения с хорошим пользовательским опытом.
Производительность и безопасность - важные аспекты качества приложений. Браузеры понимают только JavaScript, поэтому производительность веб-приложений зависит от JavaScript.
Однако это не является проблемой, за исключением некоторых случаев с динамическим поведением JavaScript.
Почему JavaScript тормозит?
Каждый браузер имеет собственный JavaScript-движок.
Например, Chrome использует движок V8, Mozilla Firefox — движок рендеринга Gecko и т. д. Это просто программа, выполняющая JavaScript-код. Каждый JS-движок состоит из двух компонентов:
▪️стек вызовов (в котором выполняется код);
▪️куча (неструктурированный пул памяти, в котором хранятся объекты).
Выполнение задач, ориентированных на использование процессора или аппаратного обеспечения, таких как кодирование JSON и декодирование некоторых криптографических данных, может занять у JavaScript много времени.
📌 Читать дальше
@react_tg
Технологии в разработке ПО быстро развиваются. Появляются инструменты, помогающие создавать высокопроизводительные приложения с хорошим пользовательским опытом.
Производительность и безопасность - важные аспекты качества приложений. Браузеры понимают только JavaScript, поэтому производительность веб-приложений зависит от JavaScript.
Однако это не является проблемой, за исключением некоторых случаев с динамическим поведением JavaScript.
Почему JavaScript тормозит?
Каждый браузер имеет собственный JavaScript-движок.
Например, Chrome использует движок V8, Mozilla Firefox — движок рендеринга Gecko и т. д. Это просто программа, выполняющая JavaScript-код. Каждый JS-движок состоит из двух компонентов:
▪️стек вызовов (в котором выполняется код);
▪️куча (неструктурированный пул памяти, в котором хранятся объекты).
Выполнение задач, ориентированных на использование процессора или аппаратного обеспечения, таких как кодирование JSON и декодирование некоторых криптографических данных, может занять у JavaScript много времени.
📌 Читать дальше
@react_tg
👍11🔥5❤2👎1
🔥 Дайджест полезных материалов из мира React за неделю
Почитать:
— Увеличиваем свою производительность в WebStorm / PhpStorm c помощью шаблонов
— Пристальный взгляд на отладку JavaScript приложений
— Один компонент, 20+ фич, A/B-тесты: Поможет ли машина состояний?
— 15 лучших бесплатных курсов по Linux
— Как добавить несколько товаров в Shopify корзину одним кликом?
— Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии
— React 18: что поменялось
— Restyle как новый стандарт для создания UI в React Native
— React Fiber & Concurrency Part 1 (2)
— Svelte: Знакомство с рунами
— Tailwind не только для MVP
— Mastering React.js: Top 20 Interview Questions You Need to Know
— Send email confirmation in Strapi
— 3D cube using pure css
— 3D cubes animation using pure css
— Best Coding Practices and Tools for React Developers
— Step by step on how to setup fabric.js in the next.js app
— Top 5 form validation libraries in React JS and Next JS
— How to login with Google on React App?
— React Advanced: Manage Server States in the right way
— Building Authentication in React Using Firebase
Посмотреть:
🌐 CSS nth-child Just Got 100x Better (⏱ 00:56)
🌐 Clean Code Is Killing Your Projects (⏱ 09:20)
Хорошего дня!
@react_tg
Почитать:
— Увеличиваем свою производительность в WebStorm / PhpStorm c помощью шаблонов
— Пристальный взгляд на отладку JavaScript приложений
— Один компонент, 20+ фич, A/B-тесты: Поможет ли машина состояний?
— 15 лучших бесплатных курсов по Linux
— Как добавить несколько товаров в Shopify корзину одним кликом?
— Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии
— React 18: что поменялось
— Restyle как новый стандарт для создания UI в React Native
— React Fiber & Concurrency Part 1 (2)
— Svelte: Знакомство с рунами
— Tailwind не только для MVP
— Mastering React.js: Top 20 Interview Questions You Need to Know
— Send email confirmation in Strapi
— 3D cube using pure css
— 3D cubes animation using pure css
— Best Coding Practices and Tools for React Developers
— Step by step on how to setup fabric.js in the next.js app
— Top 5 form validation libraries in React JS and Next JS
— How to login with Google on React App?
— React Advanced: Manage Server States in the right way
— Building Authentication in React Using Firebase
Посмотреть:
🌐 CSS nth-child Just Got 100x Better (⏱ 00:56)
🌐 Clean Code Is Killing Your Projects (⏱ 09:20)
Хорошего дня!
@react_tg
👍9❤3🔥3
Разработка веб-интерфейсов кажется простой, но только на первый взгляд.
Если углубиться в нее, обнаруживается множество сложностей, озадачивающих даже опытных специалистов.
Эта статья поможет вам разобраться с рядом проблем разработки веб-интерфейсов, начиная с несоответствия между веб-языками и современными требованиями к пользовательскому интерфейсу и заканчивая сложными вопросами управления данными и вызовами асинхронных API.
Кроме того, мы исследуем так называемые “нерезультативные пути” (“unhappy paths”), часто упускаемые из виду. К ним относятся состояния загрузки, обработка ошибок, а также более широкие архитектурные аспекты, включающие безопасность, производительность и доступность.
📌 Читать
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎2❤1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
https://codepen.io/ZachSaucier/pen/gZzPgQ
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2❤1
🔥 Дайджест полезных материалов из мира React за неделю
Почитать:
— Миграция с Webpack и react-scripts на Vite: Путь к Быстрому и Легковесному React
— Юриспруденция и программирование: что общего?
— Heretic: full stack фреймворк на основе Marko.js
— Как типизировать Vuex Store
— Кулинарный гид по Vue.js: всё о props
— Как декораторы могут упростить разработку веб-форм
— React Fiber & Concurrency Part 2 (2)
— useState - don't get Hooked 🪝
— How to Maintain React State in a URL Query String for a Shareable Application State
— "Props and States in React JS"
— Cosmos Surge
— Moving a Square with CSS Grid and Minimal JavaScript
— Introducing LinkedIn Job Scanner Chrome Extension and Sharing Problems I Encountered While Developing
— React Virtualisation from scratch
— Experienced Web Developer in NYC - Seeking Advice?
— ReactJs vs React Native: Resumen, diferencias clave, ventajas y desventajas
— Endless slideshow with just framer-motion for animation
Посмотреть:
🌐 How To Create 3 Levels Of React Image Sliders - Beginner, Intermediate, Expert (⏱ 37:25)
🌐 This New CSS Property Is Simple Yet Useful (⏱ 00:54)
Хорошего дня!
@react_tg
Почитать:
— Миграция с Webpack и react-scripts на Vite: Путь к Быстрому и Легковесному React
— Юриспруденция и программирование: что общего?
— Heretic: full stack фреймворк на основе Marko.js
— Как типизировать Vuex Store
— Кулинарный гид по Vue.js: всё о props
— Как декораторы могут упростить разработку веб-форм
— React Fiber & Concurrency Part 2 (2)
— useState - don't get Hooked 🪝
— How to Maintain React State in a URL Query String for a Shareable Application State
— "Props and States in React JS"
— Cosmos Surge
— Moving a Square with CSS Grid and Minimal JavaScript
— Introducing LinkedIn Job Scanner Chrome Extension and Sharing Problems I Encountered While Developing
— React Virtualisation from scratch
— Experienced Web Developer in NYC - Seeking Advice?
— ReactJs vs React Native: Resumen, diferencias clave, ventajas y desventajas
— Endless slideshow with just framer-motion for animation
Посмотреть:
🌐 How To Create 3 Levels Of React Image Sliders - Beginner, Intermediate, Expert (⏱ 37:25)
🌐 This New CSS Property Is Simple Yet Useful (⏱ 00:54)
Хорошего дня!
@react_tg
👍12❤3🔥2
Многие разработчики продолжают использовать хуки
useState
и useEffect
для обновления состояний, но мне такой подход не нравится. Проблема заключается в том, что компонент одновременно монтируется, перемонтируется и размонтируется, что приводит к неожиданному поведению. В результате при записи в консоль результат может быть повторен три раза.Назначение хука useLoaderData
Хук
useLoaderData
— это пользовательский хук в React, который помогает загружать данные в компонент. Он упрощает получение данных из API и выполнение асинхронных операций.Используя хук
useLoaderData
, вы предоставляете ему функцию, которая возвращает промис. Этот промис представляет собой асинхронную операцию, в результате которой будут получены необходимые данные. Как только промис разрешится, данные станут доступны компоненту.Хук
useLoaderData
обрабатывает состояние загрузки, поэтому вам не нужно вручную отслеживать, загружаются ли еще данные или их загрузка уже закончена. Он предоставляет удобный способ доступа к данным, а также позволяет устранять возможные ошибки, которые могут возникнуть при загрузке данных.Хук
useLoaderData
позволяет сохранить чистоту и организованность кода компонента, отделяя логику загрузки данных от остальных задач компонента. Это позволяет легко получать данные и управлять ими более удобным для новичков способом.Как это работает
Надеюсь, вы хорошо знаете, как функционирует
React Router 6.
В противном случае ознакомьтесь с документацией по ссылке.Прежде всего, нам необходимо настроить систему маршрутизации в приложении для работы с API загрузчика. До этого момента мы использовали настройку
BrowserRouter
для работы с различными маршрутами приложения.Обсудим этот фрагмент.
import { BrowserRouter, Routes, Route, Outlet } from "react-router-dom"
import HomeComponent from "./home"
import AboutCompoent from "./about"
function App () {
<BrowserRouter>
<Routes>
<Route path='/' element={<Outlet />}>
<Route index element={<HomeComponent /> } />
<Route path='about' element={<AboutComponent/> } />
</Route>
</Routes>
</BrowserRouter>
};
export default App;
Здесь создана традиционная система маршрутизации с использованием импорта из React Router.Что тут происходит?
BrowserRouter из библиотеки React Router создает массив объектов из дочерних элементов Routes. Приведенный ниже фрагмент наглядно демонстрирует, как это происходит.
BrowserRouter([
{
path: '/',
element: <HomeComponent />,
children: []
},
{
path: '/about',
element: <AboutComponent/>,
children: []
}
])
📌 Читать дальше
@react_tg
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡23👍18❤2🔥2🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
GSAP - Scroll animation — анимация текста при прокрутке. Реализована с помощью CSS и JavaScript
#анимация #css #javascript #gsap
https://codepen.io/Tiopayo/pen/QWZbqZz
@react_tg
#анимация #css #javascript #gsap
https://codepen.io/Tiopayo/pen/QWZbqZz
@react_tg
🔥12👍2🥰1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥9❤2🤯2