Lite Components
In addition to the standard component$() with all of it's lazy-loaded
properties, Qwik also supports lightweight (lite) components that act more
like traditional frameworks. Lite components may also be called inline
components.
import { component$ } from '@builder.io/qwik';
// Lite component: declared using a standard function.
export const MyButton = (props: { text: string }) => {
return <button>{props.text}</button>;
};
// Component: declared using `component$()`.
export const MyApp = component$(() => {
return (
<div>
Some text:
<MyButton text="Click me" />
</div>
);
});
In the above example, MyButton is a lite component.
Unlike the standard component$(), lite components cannot be individually
lazy-loaded; instead they are bundled with their parent component. In this case:
MyButtonwill get bundled with theMyAppcomponent.- Whenever
MyAppis rendered, it will also guarantee thatMyButtonis rendered. MyButtondoes not have a host element.
You can think of lightweight components as being inlined into the component where they are instantiated.
Limitations
Lite components come with some limitations that the standard component$()
does not have. Lite components:
- Cannot use
usemethods such asuseSignaloruseStore.
As the name implies, lite components are best used sparingly for lightweight pieces of markup since they offer the convenience of being bundled with the parent component.