и посмотреть медиа
Frontend Interview - JS HTML CSS
и посмотреть медиа
Channel for preparing for frontend interviews: JavaScript, HTML, CSS. Practical tasks and analyses.
Channel for preparing for frontend interviews: JavaScript, HTML, CSS. Practical tasks and analyses.
The resource is dedicated to preparing for frontend developer interviews. Contains questions, tests and answers on JavaScript, HTML and CSS. Helps systematize knowledge and confidently pass the interview.
Какие есть способы оптимизации рендеринга в 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
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!