#reactjs #sass
#reactjs #sass
Вопрос:
Я загружаю свое приложение с помощью create-react-app и хочу разрабатывать с использованием Typescript и SASS. Я раньше использовал Angular, где я мог легко ссылаться на файл SASS следующим образом:
@Component({
selector: 'unit-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
providers: []
})
В React я пытаюсь импортировать файл SASS следующим образом:
import s from "./mystyles.scss";
Но я получаю сообщение об ошибке
Не удается найти модуль «./mystyles.scss»
. Как я могу импортировать файл SASS в файл .tsx?
Комментарии:
1. Оформить заказ create-react-app с помощью Sass
Ответ №1:
Предполагая, что вы успешно установили node-sass
приложение React на TypeScript create-react-app
, точно так же, как вы бы добавили / импортировали таблицу стилей CSS, выполнив следующее:
import './mystyles.css';
Для таблицы стилей SCSS вам нужно просто изменить тип файла:
import './mystyles.scss';
В вашем примере вам просто нужно рассматривать это как импорт модуля только для его побочных эффектов вместо импорта по умолчанию, как вы пытаетесь в данный момент.
Вы также можете рассматривать его как SCSS-модуль, обновив имя файла SCSS на mystyles.module.scss
и импортировав его следующим образом:
import styles as './mystyles.module.scss';
Я смог реализовать обе части функциональности, выполнив следующее, поскольку поддержка Sass / SCSS встроена по умолчанию в react-scripts@2.0.0
и более поздних проектах:
- Создал TypeScript create-react-app с помощью команды
npx
create-react-app my-app --template typescript - Перейдите в каталог create и установите node-sass с помощью команды
npm install --save
node-sass - Изменено значение по умолчанию, генерируемое
App.css
наApp.scss
- Изменен импорт в
App.tsx
сimport './App.css';
наimport './App.scss';
Убедитесь, что вы node-sass
установлены. Если это не поможет, возможно, вам придется пересмотреть то, как вы создавали / конвертировали свой create-react-app
файл в TypeScript.
Вам нужно либо импортировать его как import './mystyles.scss';
, либо фактически вставить module
в имя файла и импортировать его как import whatever from './mystyles.module.scss';
.
Комментарии:
1. привет, ты можешь поместить стили scss в переменную в файле TSX?
2. Я пробовал, но у меня не получилось, scss-файл работает как простой css, когда я импортирую scss-файлы в виде модулей в компоненты (в моем react-ts-starter). Я не знаю, как обстоят дела с «create-react-app» . @Barcode HJ
3. Просто для справки,
@import
будет устаревшим в пользу@use
и@forward
, а поддержка будет прекращена самое позднее к 2022 году.