Работа с Next
Раздел описывает варианты и нюансы подключения библиотеки в рамках работы с NextJs
.
RSC - React Server Components (App router)
Библиотека поддерживает работу с RSC только при явном использовании директивы 'use client'.
'use client'
import { Button } from '@salutejs/plasma-giga';
...
Подключение тем
Ниже представлены различные способы подключения темы в проект:
Styled Components
info
Прежде всего убедитесь, что у вас правильно настроена работа со Styled Components.
Для справки: официальный пример работающей реализации.
import type { AppProps } from "next/app";
import { plasma_giga__light } from '@salutejs/plasma-themes';
import { createGlobalStyle } from "styled-components";
const PlasmaTheme = createGlobalStyle(plasma_giga__light);
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<PlasmaTheme />
<Component {...pageProps} />
</>
);
}
Импорт CSS
import type { AppProps } from "next/app";
import '@salutejs/plasma-themes/css/plasma_giga__dark.css';
export default function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />;
}
Работа с компонентами
Библиотека поставляет компоненты в формате Styled Components
и на обычном CSS
.
Пример со Styled Components
import React from 'react';
import { Button } from '@salutejs/plasma-giga/styled-components'
export default function Home() {
return (
<div>
<Button>Button</Button>
</div>
);
}
Пример с CSS
tip
Next не разрешает импорт CSS из сторонних модулей, поэтому важно не забыть добавить наши библиотеки в next.config.js
следующим образом:
const nextConfig = {
reactStrictMode: true,
transpilePackages: ['@salutejs/plasma-giga', '@salutejs/plasma-new-hope', '@salutejs/plasma-icons']
};
И далее уже можно подключать наши компоненты:
import React from 'react';
import { Button } from '@salutejs/plasma-giga'
export default function Home() {
return (
<div>
<Button>Button</Button>
</div>
);
}