【问题标题】:Is there a problem with my boostrap, badge not applying?我的引导程序有问题,徽章不适用吗?
【发布时间】:2021-09-25 23:34:36
【问题描述】:

现在我正在学习如何使用 ReactJS,但由于某种原因,我的引导程序无法在我的 .jsx 文件中运行。我正在关注一个教程(MOSH),我遵循了 T 的所有内容,甚至搜索了整个堆栈溢出,什么也没有。有人和我有同样的问题,他们通过导入 CSS 解决了这个问题。我尝试做同样的事情,但什么也没做。我试图在按钮旁边获得一个徽章,按钮显示但徽章不显示。我什至尝试多次安装引导程序,但没有骰子。

index.js:

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import reportWebVitals from './reportWebVitals';
    import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
    import Counter from './components/counter';

    ReactDOM.render(<Counter />, document.getElementById('root'));


    reportWebVitals();

counter.jsx:

    import React, { Component } from "react";

    class Counter extends Component {
    state = {
        count: 0,
        
    };  

    render() {
        return (
            <div>
            
                <span className = "badge badge-primary">{this.formatCount()}</span>
                <button>Increment</button>
            </div>
        );
    }

    formatCount(){
      const {count} = this.state;
      return count === 0 ? 'Zero' : count;
    }
}

export default Counter;

【问题讨论】:

  • 引导 CSS 路径是 import 'bootstrap/dist/css/bootstrap.min.css';

标签: javascript css reactjs


【解决方案1】:

我注意到的问题是您为徽章使用了不正确的引导类名称,因为您可能已经安装了最新版本的引导程序(引导程序 v5.1)。您的徽章将适用于较旧的引导程序版本(v4.6)。因此,要解决此问题,请尝试使用:className = "badge bg-primary",否则您必须降级引导版本。

  • 引导 v5.1:&lt;span className = "badge bg-primary"&gt;&lt;/span&gt;
  • bootstrap v4.6(或以下):&lt;span className = "badge badge-primary"&gt;&lt;/span&gt;

请点击以下链接获取 bootstrap v5.1 和 v4.6 的文档:

此外,我运行了您的代码,但没有获得预期的功能: 这里我建议一个更简单的计数器方法:

index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
import Counter from './Counter.jsx';

ReactDOM.render(<Counter />, document.getElementById('root'));

Counter.jsx

import React, { useState } from "react";

function Counter(){
    let [count, setCount] = useState(0);

    return (
        <div className="container">
            <span className = "badge bg-primary">{formatCount()}</span>
            <button className="btn btn-success" onClick ={increase}>Increment</button>
        </div>
    );

    function increase(){
        setCount(count + 1);

    }

    function formatCount(){
        return (count === 0 ? 'Zero' : count);
         }
    
}

export default Counter;

我为按钮和自定义 CSS 添加了一个额外的引导类以使组件居中:

styles.css:

 .container {
    text-align: center;
    margin: 20% auto;
}

回答您的样式问题。

  • 使用三元运算符根据“count”的值选择引导类。它将选择引导类“badge bg-warning”或“badge bg-primary”,具体取决于计数等于0还是计数不等于0。

Counter.jsx

 import React, { useState } from "react";

function Counter(){
    let [count, setCount] = useState(0);

    return (
        <div className="container">
            <span className = {count === 0 ? "badge bg-warning" : "badge bg-primary"}>{formatCount()}</span>
            <button className="btn btn-success" onClick ={increase}>Increment</button>
        </div>
    );

    function increase(){
        setCount(count + 1);

    }

    function formatCount(){
        return (count === 0 ? 'Zero' : count);
         }
    
}

export default Counter;
  • 其他代码与之前保持一致。

请参考以下链接:

【讨论】:

  • 非常感谢。我在 YouTube 上做一个教程,他使用的是 MAC,所以对我来说可能更难。此外,由于此代码有效,我将如何设置徽章的样式?示例:当徽章显示“零”时,它是一种警告颜色,如果计数为 1,则为蓝色。非常感谢。
  • 感谢您的评论。您的代码和我的代码之间的区别在于您使用了类组件,而我使用了钩子。如果你使用最新版本的 React,Hooks 支持 MAC 和 windows。然而,钩子是更新和更简单的概念,react 也鼓励使用钩子而不是类组件进行编码。我已经为您要求的样式问题添加了答案,并添加了一些链接以了解有关钩子和类组件的更多信息。我已经编辑了我现有的答案。请参考。
猜你喜欢
  • 2013-09-12
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多