useStyles() - Стили

Стилизация является важной частью дизайна веб-приложения. Qwik отвечает за загрузку информации о стилях при монтировании компонента. Используйте useStyles$(), чтобы указать Qwik, какой стиль должен быть загружен.

Почему не встроенные стили?

Простейший способ загрузить стили заключается в том, чтобы встроить информацию о стилях прямо в компонент следующим образом:

export const MyComponent = () => {
  return (
    <>
      <style>.my-class { color: red; }</style>
      Мой компонент
    </>
  );
}

Проблема этого подхода заключается в том, что мы будем загружать стили дважды:

  1. Стили вставляются в HTML как часть SSR.
  2. Затем, когда компонент становится недействительным и его нужно перерисовать, стили загружаются снова, поскольку они встроены.

Необходимо загрузить стили независимо от компонента. Для этого и существует useStyles$(). Существует два сценария:

  1. Компонент рендерится на сервере, а стили вставляются в секцию <head> страницы, как часть SSR.

    Добавление нового экземпляра компонента в приложение не требует загрузки стилей, так как они уже включены, как часть SSR.

  2. Первый рендер компонента происходит на клиенте. В этом случае новый компонент не будет иметь стилей в <head>, так как компонент не был частью SSR.

    Добавление нового компонента, который не был частью SSR, требует загрузки и вставки стилей в секцию <head>.

Пример

Этот пример содержит два компонента:

  1. <Sibling>: Компонент <Sibling> предварительно рендерится на сервере, поэтому он имеет стили в <head>, так как они были добавлены во время SSR. Добавление дополнительных компонентов <Sibling> не требует загрузки стилей.
  2. <Child>: Компонент <Child> можно добавить, нажав на кнопку переключить. Поскольку он не был частью предварительного рендера на сервере, у него нет стилей в <head>. Переключение <Child> требует, чтобы стили были загружены.
Edit Tutorial