#css #reactjs
#css #reactjs
Вопрос:
Здравствуйте, я использую React для создания веб-сайта, и я хочу использовать.Файлы CSS для моего CSS, и я использую import ‘./example.css’ в моем компонентном файле. Пример:
import React from 'react';
import 'Home.css';
const Home = () => {
return (
<div className="example">
Hi
</div>
)
}
и если я создаю другую страницу, но не импортирую этот файл CSS, я получаю стили на моей другой странице
другая страница:
import React from 'react';
const About= () => {
return (
<div className="example">
Hi
</div>
)
}
Есть ли причина и решение для этого?
Ответ №1:
При импорте файла css, как вы это сделали, он будет введен в проект, а не только в компонент, из которого вы его импортируете.
То, что вы ищете, это css-модули (добавление css-модулей с помощью create-react-app)
import React from 'react';
import styles from 'Home.css';
const Home = () => {
return (
<div className={styles.example}>
Hi
</div>
)
}
Комментарии:
1. Могу ли я использовать одно и то же имя класса во всех файлах с модулем css?
2. да. потому что css-module переименует имя класса во что-то вроде
example_dfd23
, чтобы оно было уникальным в браузере.3. Что, если я хочу объединить другой класс с этим модулем css. Допустим, класс начальной загрузки. Я бы просто использовал строки шаблона, такие как
className={row ${styles.example}}
4. @IbrahimFarooq есть несколько способов сделать это. один из них — это то, что вы предложили. другой
className={["row", styles.example].join(" ")}
, а затем есть вспомогательный пакет для этого, называемый classnames5. @Philip Я полагаю, что даже с модулями css стили, применяемые к элементам html, например, для h1 { color: red} , все равно будут глобальными и будут применяться ко всем компонентам? Это правда?
Ответ №2:
Причина в том, что вы используете один и тот же класс в обоих ваших компонентах. Выполнение import 'Home.css'
не инкапсулирует .css
только для этого компонента, все .css
они объединяются вместе, поэтому в конечном итоге стили перезаписываются где-то в конце строки.
Для каждого из компонентов вы можете указать уникальный className
поверх вашего компонента и использовать этот класс для стилизации только этого компонента. .home-container .header { ... }
Вы также можете создать одну глобальную .css
часть, чтобы поместить стили, которые вы хотите продолжать использовать во всем приложении.