и посмотреть медиа
Frontend Interview - JS HTML CSS
и посмотреть медиа
Канал для подготовки к собеседованиям по фронтенду: JavaScript, HTML, CSS. Практические задания и разборы.
Канал для подготовки к собеседованиям по фронтенду: JavaScript, HTML, CSS. Практические задания и разборы.
Ресурс посвящен подготовке к собеседованиям на позиции фронтенд-разработчика. Содержит вопросы, тесты и ответы по JavaScript, HTML и CSS. Помогает систематизировать знания и уверенно пройти интервью.
Какие есть способы оптимизации рендеринга в react? Это процесс снижения количества лишних перерисовок компонентов, что улучшает производительность приложения. React повторно рендерит компоненты, когда их состояние (state) или свойства (props) изменяются. Однако часто это приводит к ненужным рендерам, которые можно избежать. Производительность Чем больше компонентов рендерится без необходимости, тем больше времени тратится на вычисления и обновления DOM. Экономия ресурсов Избегая лишних рендеров, приложение работает быстрее, а пользовательский интерфейс становится более отзывчивым. Лучший UX Плавная работа интерфейса критична для сложных приложений с большим количеством данных. Мемоизация компонентов React предоставляет утилиту React.memo, чтобы предотвращать ререндеринг компонента, если его props не изменились. import React from 'react'; const MyComponent = React.memo(({ count }) => { console.log('Рендер компонента'); return Счётчик: {count} ; }); // Использование export default function App() { const [count, setCount] = React.useState(0); return ( setCount(count + 1)}>Увеличить ); } Использование `useMemo` и `useCallback` Эти хуки используются для предотвращения повторных вычислений и создания функций при каждом рендере. import React, { useMemo } from 'react'; function ExpensiveCalculationComponent({ number }) { const calculatedValue = useMemo(() => { console.log('Выполняются сложные вычисления...'); return number ** 2; }, [number]); // Пересчитывается только если `number` изменился return Результат: {calculatedValue} ; } Пример useCallback import React, { useCallback, useState } from 'react'; const Child = React.memo(({ onClick }) => { console.log('Рендер дочернего компонента'); return Кликни меня; }); function Parent() { const [count, setCount] = useState(0); const handleClick = useCallback(() => { console.log('Кнопка нажата'); }, []); // Создаётся одна и та же функция между рендерами return ( setCount(count + 1)}>Увеличить {count} ); } Разделение кода и ленивый рендеринг Использование React.lazy и Suspense позволяет загружать компоненты только тогда, когда они необходимы. import React, { Suspense } from 'react'; const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( ); } Проверка зависимости в `useEffect` Избегайте запуска побочных эффектов, если зависимости не изменились. React.useEffect(() => { console.log('Эффект сработал!'); }, [/* следите только за нужными зависимостями */]); Избегайте анонимных функций и объектов в `props` Передача новых объектов и функций через props вызывает лишние рендеры. Лучше так const data = { key: 'value' }; ; Разделение больших компонентов Если компонент слишком сложный, разделите его на более мелкие, чтобы React мог эффективно управлять состоянием и перерисовкой. Использование ключей при рендере списков Каждый элемент списка должен иметь уникальный ключ, чтобы React мог правильно отслеживать изменения. {items.map(item => ( {item.name} ))} 👉 @frontendInterview
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!