Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: memo

Вызывают ли изменения props ререндеры в React?

Проверяет понимание механизма ререндеров в React при изменении пропсов.

Короткий ответ

Изменение props вызывает ререндер компонента. По умолчанию при ререндере родителя ререндерятся и его дочерние компоненты, даже если их props не изменились. Чтобы этого избежать, используют мемоизацию (React.memo, shouldComponentUpdate, PureComponent).

Длинный ответ

1. Стандартное поведение:

  • Если родительский компонент обновляет пропсы, дочерний компонент ререндерится.

    Пример:

    function Parent() {
      	const [count, setCount] = useState(0);
      	return <Child value={count} />; // Child ререндерится при каждом изменении count
    }

2. Оптимизация (чтобы избежать лишних ререндеров):

  • React.memo (для функциональных компонентов):

    const Child = React.memo(({ value }) => {
      	return <div>{value}</div>;
    });
  • shouldComponentUpdate (для классовых компонентов):

    class Child extends React.Component {
     	 shouldComponentUpdate(nextProps) {
        		return nextProps.value !== this.props.value; // Ререндерим, только если value изменилось
      	}
      	render() { ... }
    }

3. Когда пропсы не вызывают ререндер?

  • Если пропс ссылочно тот же (например, объект не изменился, хотя его внутренности могли).

  • Если компонент не использует пропс в render().

Итог:

  • Пропсы по умолчанию вызывают ререндер.

  • Можно оптимизировать через React.memo или shouldComponentUpdate.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • React

    React

Ключевые слова

#memo

Подпишись на React Developer в телеграм