如何在自举的React / Redux应用程序中覆盖自举主题颜色?

Sma*_*ajl 3 css sass reactjs bootstrap-4

可能是一个新手问题(以REACT开头),但是我无法在新启动的react应用程序中更改主题颜色。

我读了一些答案,但不幸的是,它们对我没有用。

我有以下入口点:

import React from 'react';
import ReactDOM from 'react-dom';
import { App } from './components/App';
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap';
import './styles/app.scss';

ReactDOM.render(<App />, document.getElementById('app'));
Run Code Online (Sandbox Code Playgroud)

我在中有app.scss样式表src/styles

@import '_settings.scss';
@import '_base.scss';
@import './components/_header.scss';
Run Code Online (Sandbox Code Playgroud)

我尝试在此处更改主题颜色,但似乎无济于事:

@import "node_modules/bootstrap/scss/bootstrap";

$theme-colors: (
  "primary": #991196,
  "danger": #ff4136
);
Run Code Online (Sandbox Code Playgroud)

有人可以向我指出这是如何工作的,因为我遇到的所有答案和惯例似乎都在使用不同的方法。

我正在使用以下版本的Bootstrap:

"bootstrap": "^4.0.0"
Run Code Online (Sandbox Code Playgroud)

Zim*_*Zim 8

您可以进行覆盖并完全在app.scss文件中导入 Bootstrap 。重要的是主题颜色更改导入 Bootstrap以覆盖 bootstrap _variables.scss 中定义的 !default 主题颜色。

    @import '_settings.scss';
    @import '_base.scss';
    @import './components/_header.scss';

    /* import only the Bootstrap files needed for customizations */
    @import "node_modules/bootstrap/scss/functions";
    @import "node_modules/bootstrap/scss/variables";

    /* make the customizations */
    $theme-colors: (
      "primary": #991196,
      "danger": #ff4136
    );

    /* import bootstrap to set changes */
    @import "node_modules/bootstrap/scss";
Run Code Online (Sandbox Code Playgroud)

当构建 React 应用程序并编译 SASS 时,生成的 CSS 将包含您的自定义和 Bootstrap,因此您无需在 react 中单独导入引导程序。

演示:https : //www.codeply.com/go/Tho2TEwoI1


Gau*_*aik 7

首先参考这个,Bootstrap Webpack

这是在reactjs项目中使用引导程序的一种方法。

您正在通过此操作导入Bootstrap CSS的编译版本

import 'bootstrap/dist/css/bootstrap.min.css'; //Dont do this
Run Code Online (Sandbox Code Playgroud)

相反,您应该这样做

在您的app.scss文件中,

首先定义你的颜色

$primary: #13C7CD;
$danger: #red;
Run Code Online (Sandbox Code Playgroud)

然后

导入引导的scss版本

@import '~bootstrap/scss/bootstrap';
Run Code Online (Sandbox Code Playgroud)

~ 意味着webpack将在其中搜索 node_modules

在此之后,将app.scss文件导入到您的主js文件中(可以是index.js或app.js)

import './styles/app.scss';
Run Code Online (Sandbox Code Playgroud)

如何运作

在导入引导scss之前定义颜色变量时,生成的符合标准的css将具有您的颜色值