Haunted — это легковесная библиотека для создания веб-компонентов с использованием реактивного подхода, основанного на хуках, аналогичных React. Несмотря на простоту использования, отладка и инспектирование компонентов требует понимания внутренней структуры виртуального состояния и связей между хуками. DevTools браузера предоставляет инструменты для анализа DOM, но для Haunted необходимо учитывать особенности реактивного механизма.
Компонент Haunted строится на основе функции с хуками состояния:
import { html, component, useState } from 'haunted';
function Counter() {
const [count, setCount] = useState(0);
return html`
<div>
<p>Счётчик: ${count}</p>
<button @click=${() => setCount(count + 1)}>Увеличить</button>
</div>
`;
}
customElements.define('my-counter', component(Counter));
Ключевые моменты для инспектирования:
document.querySelector
и стандартные панели Elements DevTools.В Haunted хуки, такие как useState и
useReducer, хранятся внутри закрытых областей видимости
функции компонента. Для их инспектирования применяются несколько
подходов:
console.log(count);
Вывод текущего состояния в консоль позволяет отслеживать изменения на каждом рендере.
const Counter = () => {
const [count, setCount] = useState(0);
const self = this;
self.debugCount = count;
return html`<p>${count}</p>`;
};
После этого в консоли DevTools можно получить текущее значение через:
document.querySelector('my-counter').debugCount
useEffect для
логированияuseEffect(() => {
console.log('Count updated:', count);
}, [count]);
useEffect позволяет выполнять побочные действия после
каждого обновления состояния, что особенно полезно при сложных
зависимостях.
Haunted рендерит шаблон в Shadow DOM по умолчанию, если компонент
создаётся через component. Это влияет на:
@event=${handler}, регистрируются на хост-элементе и
делегируются через Shadow DOM. Для инспекции событий используйте вкладку
Event Listeners и проверяйте наличие событий на host и
shadowRoot.<my-counter> и изучить
структуру Shadow Root.<p> после вызова
setCount.Для компонентов с несколькими хуками или вложенными Haunted-компонентами рекомендуется:
useEffect(() => {
console.log('[Counter] count:', count);
}, [count]);
useRef для
доступа к DOM-узлам:const divRef = useRef();
useEffect(() => {
console.log(divRef.current);
}, []);
this.increment = () => setCount(count + 1);
console.log в больших компонентах —
может замедлять рендер.Существуют плагины для DevTools, расширяющие возможности инспекции веб-компонентов:
Haunted сочетает реактивность с минималистичной архитектурой, что делает инспекцию одновременно простой и требующей внимательного подхода. Основное внимание при отладке уделяется отслеживанию состояния хуков и Shadow DOM, что позволяет эффективно контролировать поведение компонентов и понимать процесс рендеринга.