你如何从反应引导程序中覆盖切换按钮的css?

Posted

技术标签:

【中文标题】你如何从反应引导程序中覆盖切换按钮的css?【英文标题】:How do you override the css for toggle buttons from react bootstrap? 【发布时间】:2021-12-20 23:00:29 【问题描述】:

我有一些切换按钮,我希望有与默认不同的配色方案/主题。理想情况下,我只想能够使用变体,但是 react-bootstrap 的切换按钮不支持使用其他按钮可以使用的变体。我尝试遵循从here 看到的解决方案。虽然我已经能够改变颜色,但我根本无法改变活动颜色。

const  state, dispatch  = useStateProvider();
    const skills = state.sponsorManager.getSkillsForRankFromSponsor('f', state.sponsor);

    const [checked, setChecked] = React.useState(false);

    let skillCards = skills.map(v => (
        <ToggleButton
            className="untoggled-button"
            id=v.id
            key=v.id
            value=v.id
            onClick=(e) =>  console.log(e.currentTarget); setChecked(e.currentTarget.checked) 
        >
            v.displayName
        </ToggleButton>
    ));

    return (
        <div>
            <ToggleButtonGroup type="checkbox">
                skillCards
            </ToggleButtonGroup>
        </div>
    )
App.css
.untoggled-button 
  /* background-image: green !important; */
  background-color: green !important;
  color: white;

.untoggled-button.active 
  background-color: red !important;


Codepen

【问题讨论】:

【参考方案1】:

您的状态变量 checked 在 false 和 undefined 之间切换。

请尝试以下建议,在沙箱中对此进行了测试,它可以根据您的要求工作。

添加了一个单独的按钮组件,为各个按钮维护一个单独的状态。这样您就可以多次重复使用此按钮组件。

在你的 index.js 中,像这样修改代码

//index.js
import React from "react";
import ReactDOM from "react-dom";
import  ToggleButtonGroup, ToggleButton  from "react-bootstrap";
import "./styles.css";


function CustomButton(type,uId) 
  const [checked, setChecked] = React.useState(false);

  return (
    <ToggleButtonGroup type=type>
    <ToggleButton
      className=checked ? "untoggled-button-active" : "untoggled-button"
        id=uId
        key=uId
        value=uId
      onClick=(e) => 
        console.log(e.currentTarget);
        setChecked(!checked);
      
    >
      button
     </ToggleButton>
    </ToggleButtonGroup>
      
  )



function App() 

  return (
    <div>
      <CustomButton type="checkbox" uId="1"/>
      <CustomButton type="checkbox" uId="2"/>
    </div>
  );


ReactDOM.render(<App />, document.getElementById("root"));

然后像这样修改你的 style.css

body 
  background-color: #404040;


.untoggled-button 
  /* background-image: green !important; */
  background-color: green;
  color: white;

.untoggled-button-active 
  background-color: red;


【讨论】:

谢谢!这适用于一个按钮。但是,当添加第二个按钮时,两个按钮都会变为相同的颜色。它们也不会从绿色变为红色,而是从绿色变为蓝色。有什么想法吗? 我已根据您的评论修改了我的答案。请看一看。

以上是关于你如何从反应引导程序中覆盖切换按钮的css?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过使用引导程序和 HTML/CSS 单击按钮来激活按钮的切换?

如何更改引导程序版本 4 按钮颜色

如何在反应引导程序中使用单选按钮

使用按钮名称和图标反应引导按钮自定义

如何从另一个组件显示反应引导模式[重复]

如何添加切换按钮以折叠引导程序中的标题