preact
Version:
Fast 3kb React alternative with the same modern API. Components & Virtual DOM.
28 lines (24 loc) • 710 B
JavaScript
import options from './options';
import { defer } from './util';
import { renderComponent } from './vdom/component';
/**
* Managed queue of dirty components to be re-rendered
* @type {Array<import('./component').Component>}
*/
let items = [];
/**
* Enqueue a rerender of a component
* @param {import('./component').Component} component The component to rerender
*/
export function enqueueRender(component) {
if (!component._dirty && (component._dirty = true) && items.push(component)==1) {
(options.debounceRendering || defer)(rerender);
}
}
/** Rerender all enqueued dirty components */
export function rerender() {
let p;
while ( (p = items.pop()) ) {
if (p._dirty) renderComponent(p);
}
}