Красота (и предостережение) CSS заключается в первом C его аббревиатуры - что означает каскад - это означает, что существует ряд (довольно предсказуемых) правил, которым нужно следовать.
В этом случае about.scss
, импортируемый позже, перезапишет ваш h3 из приложения, несмотря ни на что.
1) Использовать контейнер:
import React from "react";
import "./about.scss";
export default function About() {
return (
<div className='about-page'>
<h3 className="myMargin">About</h3> // note: no need for {"myMargin"}
</div>
);
}
// about.scss
.about-page {
h3.myMargin {
margin: 10px
}
}
2) Использование CSS Модули:
Другой вариант - использовать CSS Модули , включенные по умолчанию, если вы используете довольно свежую версию create-react-app
:
import React from "react";
import styles from "./About.module.scss";
export default function About() {
return (
<div>
<h3 className={styles.myMargin}>About</h3>
</div>
);
}
// About.module.scss
.myMargin {
margin: 10px
}
Это сгенерирует уникальное className, поэтому ваш обработанный код будет выглядеть примерно так:
<div>
<h3 class='About_myMargin_mVxOd>About</h3>
</div>
Случайное ха sh ( mVxOd в качестве примера) позволит вашим стилям не перезаписывать друг друга.
Есть плюсы и минусы обоих методов, самая большая проблема при использовании обычного импорта CSS / S CSS заключается в том, что вы подчиняетесь правилам CSS: если вы случайно создайте глобальный класс .error
, тогда правила будут каскадно относиться к любому компоненту и его Иметь следить. Например, при импорте Bootstrap будет перезаписан целый ряд CSS имен, о которых вы даже не подозреваете (пока не поймете, что CSS выключен).
Другая проблема заключается в том, что, если указанный маршрут не импортирует файл CSS, но позже, импортируя файл по другому пути маршрутов, вы можете получить другой стиль. Это случалось с нами несколько раз, поэтому нужно быть особенно осторожным, особенно в больших командах.
CSS Модули имеют несколько больших недостатков, первый из которых заключается в том, что вы не можете напрямую переопределить стиль из другого файла CSS, просто переопределив его класс CSS (из-за указанного ha sh). Во-вторых, вы не можете получить доступ к вложенным селекторам CSS, разрешенным SASS.
Я лично использовал как для производственных, так и для личных проектов, и оба одинаково хороши - при осторожном использовании.
Существует Третий популярный вариант называется Styled Components. Лично это не мой выбор, и я не очень много его использовал, но вы можете узнать больше об этом на его официальной странице 1036 *. Выглядит это так:
const Title = styled.h3`
margin: 10px;
`
render() {
return <Title>About</Title> // creates an h3 tag
}
Последний, CSS в JS, который я тоже недостаточно использовал.