Как импортировать внешний CSS-файл в приложение nextjs
Я работаю над реакцией на основе следующего приложения. Некоторые пакеты npm используют внешний импорт CSS. Я получаю ошибку как
Module parse failed, you may need an appropriate loader to handle this file type.
Как я могу поддержать импорт CSS из внешних пакетов в моем приложении nextjs. Я где-то проверил, внеся изменения в next.config.js, это работает. Но я не могу найти подходящего. Было бы здорово, если бы кто-то мог мне помочь в этом.
6 ответов
Вы можете добавить файл css в заголовок nextjs.
import Head from 'next/head'
и в методе рендеринга, внутри возвращаемого значения добавьте тег head, похожий на обычный HTML, тег head должен быть внутри div.
<div>
<Head>
<title>Test</title>
<link href="/static/master.css" rel="stylesheet" key="test"/>
</Head>
</div>
также CSS должен быть в статической папке. Добавьте ключ к тегу ссылки, чтобы повторно использовать CSS на нескольких страницах. Если ключ одинаков на разных страницах, то следующий сервер не будет перезагружать CSS, а вместо этого повторно использует файл CSS.
Таким образом, нет необходимости в каких-либо пакетах CSS.
Сначала вам нужно создать next.config.js
файл в корневом каталоге
Установить следующий css
npm i @zeit/next-css
в next.config.js
const withCSS = require('@zeit/next-css')
module.exports = withCSS()
Перезапустить приложение
ИСПОЛЬЗОВАНИЕ
import 'react-select/dist/react-select.css'
Не нужно опасно SetInnerHTML
импортируйте ваш внешний CSS-файл в компонент. Например, response-select требует, чтобы вы добавили их таблицу стилей, чтобы ее стили работали. Вы можете импортировать их таблицы стилей, используя
import rsStyles from 'react-select/dist/react-select.css'
Внедрить стиль в ваш компонент, используя
dangerouslySetInnerHTML
вrender
методrender() { return ( <div> <style dangerouslySetInnerHTML={{ __html: rsStyles }} /> // rest of your component code // where you can use the injected styles </div> ); }
вы можете просто переместить свой файл css в общую папку /public/{name}.css следующим образом
и импортируйте файл css в файл src/pages/_document.js
import { Html, Head, Main, NextScript } from 'next/document'
...
<Head>
<link href="/{name}.css" rel="stylesheet" />
</Head>
...
внутри _app.js вы можете сделать следующее:
if (someCondition){
import('../styles/rtl.css');
}
в вашем файле _app.js
поместите все свои js-скрипты в тег в блоке возврата, вот так
export default function App(props) {
return (
<>
<Head>
<link
rel="stylesheet"
href="https://unpkg.com/react-quill@1.3.3/dist/quill.snow.css"
/>
<script type="text/javascript" src="/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.bundle.min.js"></script>
<script type="text/javascript" src="/js/Font-Awesome.js"></script>
<script type="text/javascript" src="/js/select2.min.js"></script>
<script type="text/javascript" src="/js/slick.min.js"></script>
</Head>
<AuthProvider>
</AuthProvider>
</>
);
}