【问题标题】:React CSS modules, inheriting from a common css moduleReact CSS 模块,继承自一个通用的 css 模块
【发布时间】:2017-10-08 22:02:49
【问题描述】:

我有几个简单的 React 组件,每个组件都在各自的文件夹中使用自己的 React CSS 模块。 CSS是基本的,但我有它的工作。我正在使用 Webpack 2 进行构建。

我的问题是如何将另一个 CSS 模块中的公共 CSS 片段共享到两个 React CSS 模块中?

我不确定我是否应该有一个只包含公共 CSS 模块的文件夹,然后将它导入到两个 React 组件中。如果是这样,我如何引用/引用常见的 CSS。

我已经阅读了文档,但我仍然感到困惑。

有没有类似于 SASS 或 Less 包含/组合的方法?

我知道这可能会破坏孤立组件的模式,但在我的简单案例中,我有一些 CSS 可以制作一个带有略微透明边框的按钮,并且所有反应组件都可以使用它会很好。我想我可以将这个 CSS 放置为一个常见的 .css 文件并让 Webpack 捆绑它,然后将其用作 className={....}

【问题讨论】:

标签: reactjs react-css-modules


【解决方案1】:

根据您的设置,执行此操作的正确方法是使用 CSS 模块的 composes 功能

这允许您定义本地化类规则,并将其导入其他本地化类规则,甚至跨文件

MyCommonStyles.css

/* base button styles */
.button {
  background: #000;
  color: #fff;
} 

MyModule1.css

/* use base button styles and override the color */
.loginButton {
  composes: button from './MyCommonStyles.css';
  color: #00ff00;
}

我知道这可能会破坏孤立组件的模式

在 CSS 模块领域中,跨模块共享 sn-ps 代码没有任何问题 - 远非如此,这是内置的,如果反复重新创建相同的样式会适得其反 - 只要不是使用全局 CSS 完成

不管它的价值如何,使用建议的 CSS 自定义属性 @apply 可以通过不同的方式实现相同的目的,您现在可以通过 postcss (https://github.com/postcss/postcss-custom-properties) 使用它。任何一种方法都很好,但我鼓励您也尝试组合使用,以创建可以跨 CSS 模块共享的通用 var 或 sn-ps。它是创建具有标准化主题的组件的好方法,仍然使用纯本地化的 CSS

【讨论】:

    【解决方案2】:

    我想我可以把这个 CSS 放在一个普通的 .css 文件中 Webpack 捆绑它,然后将其用作 className={....}

    您说得对,因为实际上您正在构建一个单页应用程序,这意味着所有内容都将被添加到一起,之后就只有 HTML、CSS 和 javascript。你可以像往常一样声明你的 CSS 样式,然后在你的渲染方法中设置一些 classNameid

    【讨论】:

    • 是的,这似乎是“简单”的解决方案
    • 这会破坏 CSS 模块的全部意义,不回答问题
    • @alechill 我已经回答并被接受了,如果你仔细阅读,你会发现我同意作者的建议,这是一个答案,然后我也建议如何使用这种方式使用“类名”和“id”。我想知道你为什么会有这种感觉,谢谢!如果您认为我的答案不正确,您可以发表评论或提供更好的答案,以某种方式说“不回答问题”不是一个好点^^
    • 我确实在下面留下了真实的答案。你的评论充其量只是一个评论和一个不正确的评论,因为它与主题 CSS 模块无关。您实际上说您不知道如何使用传统方式,这根本没有帮助。作者显然知道传统手段,但想学习这种特殊技术。因为你无能为力而将他们推开是垃圾邮件的答案
    • @alechill 感谢您的建议,但是,由于作者最清楚他/她自己问题的哪个答案是垃圾邮件,因此我的答案被接受这一事实有力地证明了这完全不是垃圾邮件,谢谢^^!
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 2018-01-06
    • 2018-06-24
    • 1970-01-01
    • 2019-12-12
    • 2016-05-14
    • 2018-04-07
    • 2019-03-09
    相关资源
    最近更新 更多