javascript - 隔离较少的样式以响应组件

标签 javascript css reactjs webpack less

我想弄清楚如何让我的 React 组件不获取另一个 React 组件的 css 类。假设我有一个名为 Home 的组件和一个名为 About 的组件,在内部它们都只包含一个类名为 header-container 的 div 和它们的 less 导入,如下所示:

首页:

import React, { Component } from 'react';

import './home.less';

class Home extends Component {
    render() {
        return (
            <div className='header-container'>
                <h1>Home</h1>
            </div>
        );
    }
}

export default Home;

关于:

import React, { Component } from 'react';

import './about.less';

class About extends Component {
    render() {
        return (
            <div className='header-container'>
                <h1>About</h1>
            </div>
        );
    }
}

export default About;

每个 less 文件看起来都是这样,颜色不同(对于这个例子,假设这是 about.less 文件):

.header-container {
    color: red;
}

现在,当我使用 react-router-dom 并尝试导航到主页时,我看到了 Home 这个词,但是在 about less 文件中是红色的,而不是我 home.less 中的蓝色文件。

这就是我导航到组件的方式

import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link, Switch } from 'react-router-dom';

import Home from './home/home';
import About from './about/about';

class App extends Component {
    render() {
        return (
            <Router>
                <Switch>
                    <Route exact path='/' component={Home}/>
                    <Route path='/about' component={About}/>
                </Switch>
            </Router>
        );
    }
}

export default App;

有人对我如何将它们分开而不影响彼此有任何建议吗?不确定它是否有帮助,但是当我看到这个时,我正在运行 webpack-dev-server 来提供文件。

编辑: 我还注意到,当我检查加载页面上的元素时,我在 head 元素中看到了以下 css。

enter image description here

最佳答案

如果要在同一个应用中并且你想使用外部样式表,建议你将两者命名为div不一样。

例如<div className='about-page__header-container'> <div className='home-page__header-container'>

这是因为作为样式表导入的css样式是全局的。

另一种方法是使用内联样式,它在 React.js 中变得越来越流行。社区。

有关两个选项的比较,请参阅 The Debate Around "Do We Even Need CSS Anymore?"

关于javascript - 隔离较少的样式以响应组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502934/

相关文章:

javascript - 在 ReactJS 中将 json 结果推送到数组的正确方法是什么?

node.js - 带有 create-react-app 的“npm start”未在 macOS 上启动服务器

javascript - 通过 id 获取 fullcalendar fc-event div

javascript - 基于欧芹验证显示 JqueryUI 工具提示

html - 如何防止网格布局 div 溢出视口(viewport)?

html - <div> 边框没有包含所有的 div 元素

javascript - SVG 背景可以交互吗?

javascript - 使用react-router的历史记录,有没有办法在不使用push()或replace()的情况下返回到之前渲染的特定页面?

javascript - 正则表达式以货币格式替换十进制数和所有句点

javascript - 正则表达式 : Get value of last bracket from the string