Отказ от ответственности: я работаю над preact.
В react
есть несколько API, которые не нужны для preact
.Но поскольку существующие сторонние библиотеки были разработаны для этих API, мы опубликовали preact-compat
, в котором их заново реализуют поверх preact
.
Некоторые примеры:
Children
-API:
Этот API особенно интересен, потому что он совсем не нужен для preact
.С preact
свойство children
всегда является массивом.
// React
Children.forEach(props.children, child => ...);
Children.map(props.children, child => ...);
Children.count(props.children);
// Preact
props.children.forEach(child => ...);
props.children.map(child => ...);
props.children.length;
unmountComponentAtNode
:
Это еще один API, который не требуется для preact
, потому что мы можем просторазмонтировать любое дерево путем рендеринга null
:
import { render } from "preact";
import App from "./app";
// Render App into dom
render(<App />, document.getElementById("root"));
// Unmount tree
render(null, document.getElementById("root"));
Если вы хотите удалить поддерево вместо корневого узла, вы можете сделать это, вернув null
из компонента.В основном null
всегда обрабатывается как пустое значение.
findDOMNode
:
// React
const element = React.findDOMNode(componentInstance);
// In Preact that's just a property
const element = componentInstance.base;
В нашем случае это работает даже для компонентов функций.Обратите внимание, что почти во всех случаях ref
s предпочтительнее, чем findDOMNode
.
Сводка: preact-compat
содержит в основном прокладки для сторонних библиотек, ожидающих полной совместимости API с react
.