Sobes.tech
Middle+

Les props peuvent-elles changer d'elles-mêmes ? Y a-t-il un moyen de faire en sorte qu'un composant ne se rende que lorsque les props changent ?

sobes.tech IA

Réponse de l'IA

Пропсы (props) в React сами по себе не изменяются — они являются неизменяемыми (immutable) с точки зрения компонента, который их получает. Изменение пропсов происходит только сверху, в родительском компоненте, который передаёт эти пропсы.

Чтобы компонент рендерился только при изменении пропсов, можно использовать:

  • React.memo — обёртка для функциональных компонентов, которая мемоизирует результат рендера и повторно рендерит компонент только если пропсы изменились по поверхностному сравнению.

  • Для классовых компонентов — shouldComponentUpdate или PureComponent, которые позволяют контролировать, когда компонент должен обновиться.

Пример с React.memo:

const MyComponent = React.memo(function MyComponent(props) {
  // компонент перерисуется только если props изменились
  return <div>{props.value}</div>;
});

Таким образом, пропсы не меняются сами по себе, а компонент можно оптимизировать, чтобы он обновлялся только при изменении пропсов.