import { hook, OptionsTypes } from './preact-options-helper.ts';
hook(OptionsTypes.RENDER, (old, vnode) => {
let component = vnode.__c;
if (component) {
// do stuff with the component instance
} else {
console.log(vnode.props);
}
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"/> | |
<title>bare-bones exhaust() vs ternary #jsbench #jsperf #jsbench #jsperf</title> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script> | |
<script src="./suite.js"></script> | |
</head> | |
<body> | |
<h1>Open the console to view the results</h1> |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"/> | |
<title>exhaust() vs ternary #jsbench #jsperf</title> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script> | |
<script src="./suite.js"></script> | |
</head> | |
<body> | |
<h1>Open the console to view the results</h1> |
This is a demonstration of using Preact without any build tooling. The library is linked from the esm.sh CDN, however a standalone JS file exporting HTM + Preact + Hooks can also be downloaded here.
This is a standalone Preact 10+ implementation of the deprecated replaceNode
parameter from Preact 10.
It provides a way to render or hydrate a Preact tree using a subset of the children within the parent element passed to render():
<body>
<div id="root"> ⬅ we pass this to render() as the parent DOM element...
import ReactDOM from "react-dom"; | |
import { RemixBrowser } from "remix"; | |
// hydrate a fake Document with the patch: | |
ReactDOM.hydrate(<RemixBrowser />, { | |
childNodes: [document.documentElement], | |
firstChild: document.documentElement, | |
appendChild(n) { document.replaceChild(n, document.documentElement); }, | |
insertBefore(n) { this.appendChild(n); } | |
}); |
import { h, hydrate } from 'preact'; | |
let C = 0; | |
export function Root({ href, data, children }) { | |
let json = data && JSON.stringify(data); | |
let id = 'root:'+++C; | |
return [ | |
h(`!--${id}--`), | |
children, | |
h('component-root', { href, id }, |
This is the guts of preact-cli
's import X from 'async!./x'
feature, extracted into a standalone library.
It creates a wrapper component that, when rendered, lazy-loads your real component. While loading, any SSR'd DOM is preserved intact.
This is the API of React.lazy()
or preact-iso's lazy(), but it does not use Suspense.
It's possible to render HTML in Preact using the dangerouslySetInnerHTML
prop,
however doing so bypasses the Virtual DOM entirely. This may be reasonable for
static HTML, but interactivity can be a little painful to graft on without VDOM.
There is another technique available that melds HTML to Virtual DOM without such limitations.