Preact изначально разрабатывался как лёгкая альтернатива React с минимальным размером и высокой производительностью. Основное преимущество — возможность использовать большинство инструментов и библиотек из экосистемы React с минимальными изменениями. Однако существует ряд особенностей, которые необходимо учитывать при интеграции.
Preact предоставляет API, практически идентичное React, включая:
useState, useEffect,
useRef, useMemo, useCallback),
что обеспечивает плавный перенос React-кода.getSnapshotBeforeUpdate).Отличие заключается в реализации некоторых методов и в том, что Preact стремится минимизировать размер и сложность. Многие внутренние детали, присутствующие в React, в Preact отсутствуют, но для большинства приложений это не критично.
preact/compatДля полной совместимости с React-библиотеками и инструментами Preact
предлагает пакет preact/compat, который
обеспечивает мост между Preact и React API. Этот пакет позволяет:
react-router, redux, formik и
другие).Пример замены импорта React на Preact с
preact/compat:
// React
import React from 'react';
import ReactDOM from 'react-dom';
// Preact
import { h } from 'preact';
import React from 'preact/compat';
import ReactDOM from 'preact/compat';
При этом весь код React будет корректно работать на базе Preact без переписывания компонентов.
Несмотря на высокую совместимость, есть несколько ключевых моментов:
Context API)
поддерживается, но необходимо следить за версиями preact и
preact/compat, так как старые версии могли иметь
ограничения в функциональности.Fragment и
createPortal поддерживаются через
preact/compat. В нативном Preact реализация проще и не
включает всех дополнительных проверок React.Большинство инструментов из экосистемы React можно использовать без
модификаций при подключении через preact/compat:
useNavigate и useParams.preact/compat.Для переноса приложения с React на Preact рекомендуется использовать следующие шаги:
preact/compat:npm install preact preact/compat
// Пример для Vite
resolve: {
alias: {
'react': 'preact/compat',
'react-dom': 'preact/compat'
}
}
Preact позволяет использовать существующие React-компоненты и
библиотеки с минимальными изменениями, предоставляя при этом
значительное уменьшение размера бандла и улучшение производительности.
Основная сложность возникает при использовании малоизвестных React API
или библиотек, сильно завязанных на внутренних механизмах React.
Правильная настройка preact/compat и понимание ограничений
делают переход максимально прозрачным.