Link
Link
is a component that renders a <link>
element in the document's <head>
.
tsx
<Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="icon" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
="/favicon.ico" />
tsx
<Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="icon" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
="/favicon.ico" />
Usage
Adding a favicon
You should always have a nice favicon for your app, you can add one by using the <Link>
pointing to your asset.
tsx
import { Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
, Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
, Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
} from "solid-start";
export default function Rootfunction Root(): JSX.Element
() { return (
<Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
lang(property) JSX.HTMLAttributes<HTMLHtmlElement>.lang?: string | undefined
="en"> <Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> <Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="icon" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
="/favicon.ico" /> </Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> </Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
> );
}
tsx
import { Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
, Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
, Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
} from "solid-start";
export default function Rootfunction Root(): JSX.Element
() { return (
<Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
lang(property) JSX.HTMLAttributes<HTMLHtmlElement>.lang?: string | undefined
="en"> <Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> <Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="icon" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
="/favicon.ico" /> </Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> </Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
> );
}
Using an emoji as a favicon
Or, here's a neat trick. You can use an emoji as your favicon:
tsx
import { Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
, Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
, Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
} from "solid-start";
let emojiSvglet emojiSvg: (emoji: string) => string
= (emoji(parameter) emoji: string
: string) => { return `data:image/svg+xml` +
`<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>${emoji(parameter) emoji: string
}</text></svg>` };
export default function Rootfunction Root(): JSX.Element
() { return (
<Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
lang(property) JSX.HTMLAttributes<HTMLHtmlElement>.lang?: string | undefined
="en"> <Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> <Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="icon" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
={emojiSvglet emojiSvg: (emoji: string) => string
("🎯")} />
</Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> </Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
> );
}
tsx
import { Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
, Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
, Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
} from "solid-start";
let emojiSvglet emojiSvg: (emoji: string) => string
= (emoji(parameter) emoji: string
: string) => { return `data:image/svg+xml` +
`<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>${emoji(parameter) emoji: string
}</text></svg>` };
export default function Rootfunction Root(): JSX.Element
() { return (
<Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
lang(property) JSX.HTMLAttributes<HTMLHtmlElement>.lang?: string | undefined
="en"> <Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> <Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="icon" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
={emojiSvglet emojiSvg: (emoji: string) => string
("🎯")} />
</Head(alias) function Head(props: ComponentProps<"head">): JSX.Element
import Head
> </Html(alias) function Html(props: ComponentProps<"html">): JSX.Element
import Html
> );
}
Adding links from routes
Link
components can not only be added to Head
but also across your application allowing dynamic addition and removal depending on if currently mounted.
tsx
export default function MyPagefunction MyPage(): JSX.Element
() { return (
<>
<Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="stylesheet" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
="my-page.css" /> <h1(property) JSX.HTMLElementTags.h1: JSX.HTMLAttributes<HTMLHeadingElement>
>My Super Cool Page</h1(property) JSX.HTMLElementTags.h1: JSX.HTMLAttributes<HTMLHeadingElement>
> </>
);
}
tsx
export default function MyPagefunction MyPage(): JSX.Element
() { return (
<>
<Link(alias) const Link: Component<JSX.LinkHTMLAttributes<HTMLLinkElement>>
import Link
rel(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.rel?: string | undefined
="stylesheet" href(property) JSX.LinkHTMLAttributes<HTMLLinkElement>.href?: string | undefined
="my-page.css" /> <h1(property) JSX.HTMLElementTags.h1: JSX.HTMLAttributes<HTMLHeadingElement>
>My Super Cool Page</h1(property) JSX.HTMLElementTags.h1: JSX.HTMLAttributes<HTMLHeadingElement>
> </>
);
}
Reference
<Link />
The Link
component specifies a relationship between the page and an external resource. Most commonly used for things like stylesheets, but it can handle a number of different associations. It is a wrapper of the link
element and is a re-export from @solidjs/meta
.