Пропсы (props) в React сами по себе не изменяются — они являются неизменяемыми (immutable) с точки зрения компонента, который их получает. Изменение пропсов происходит только сверху, в родительском компоненте, который передаёт эти пропсы.
Могут ли пропсы сами по себе измениться? Есть ли способ сделать так, чтобы компонент рендерился только при изменении пропсов?
Пропсы (props) в React сами по себе не изменяются — они являются неизменяемыми (immutable) с точки зрения компонента, который их получает.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Пропсы (props) в React сами по себе не изменяются — они являются неизменяемыми (immutable) с точки зрения компонента, который их получает. Изменение пропсов происходит только сверху, в родительском компоненте, который передаёт эти пропсы.
Чтобы компонент рендерился только при изменении пропсов, можно использовать:
React.memo— обёртка для функциональных компонентов, которая мемоизирует результат рендера и повторно рендерит компонент только если пропсы изменились по поверхностному сравнению.- Для классовых компонентов —
shouldComponentUpdateилиPureComponent, которые позволяют контролировать, когда компонент должен обновиться.
Пример с React.memo:
const MyComponent = React.memo(function MyComponent(props) {
// компонент перерисуется только если props изменились
return <div>{props.value}</div>;
});
Таким образом, пропсы не меняются сами по себе, а компонент можно оптимизировать, чтобы он обновлялся только при изменении пропсов.