islands/Counter.tsx
import kind { Sign } from "@preact/indicators";
import { Button } from "../elements/Button.tsx";
interface CounterProps {
rely: Sign;
}
export default perform Counter(props: CounterProps) {
return (
{props.rely}
);
}
Recent is aware of this file is an island as a result of it lives within the /islands
listing. This implies Recent will render the file on the entrance finish. It’ll ship the minimal quantity of front-end JavaScript to deal with simply this “island” of interactivity. Then, it may be utilized in a wide range of locations, even by components which can be absolutely rendered on the server, the place they are often optimized, pre-rendered, and shipped in a compact kind. In principle, a minimum of, this setup provides you the perfect of each worlds. Incorporating the island idea into file routing is a compelling thought.
If we return to the principle index.tsx
file, you’ll see how the island is used:
/routes/index.tsx
import { useSignal } from "@preact/indicators";
import Counter from "../islands/Counter.tsx";
export default perform House() {
const rely = useSignal(3);
return (
Attempt updating this message within the
./routes/index.tsx
file, and refresh.
);
}
The primary factor to note right here is the inclusion of the Counter
element (import Counter from "../islands/Counter.tsx"
) and its use within the regular JSX markup. It is a easy and direct means of mixing server-side rendered code with front-end island performance.