Оптимизация функционального компонента таким образом, чтобы React мог рассматривать его как чистый компонент, не обязательно требует преобразования компонента в компонент класса.
Если вы уже знакомы с пакетом перекомпоновки, вы знаете, что он предоставляет широкий набор компонентов более высокого порядка, что делает его очень полезным при работе с функциональными компонентами.
Пакет перекомпоновки экспортирует {чистый} компонент более высокого порядка, который пытается оптимизировать компонент React, предотвращая обновления компонента, если не был изменен реквизит, используя shallowEqual () для проверки на наличие изменений.
Используя чистый компонент высшего порядка, наш функциональный компонент можно обернуть следующим образом:
import React from 'react';
import { pure } from 'recompose';
function ButtonB() {
const renderCount = useRef(0);
console.log('<ButtonB /> is rendered', ++renderCount.current);
return (<button>Button B </button>);
}
// Wrap component using the `pure` HOC from recompose
export default pure(ButtonB);