如何在反应js中更改按钮onClick的背景颜色?

Posted

技术标签:

【中文标题】如何在反应js中更改按钮onClick的背景颜色?【英文标题】:How to change background color of button onClick in react js? 【发布时间】:2021-04-14 18:34:21 【问题描述】:

使用地图功能并显示的按钮不止一个。 想要更改我单击的按钮的背景颜色。而其他人则希望它保持原样。 当我再次单击另一个按钮时,仅更改该按钮的 BG 颜色。 有两个文件。一个组件 id 使用 map 函数定义按钮组件,另一个是按钮组件。 主要组件

 state = 
        categories: [],
        selectedCategory: null,
        value: 'test',
        clicked1: false,
    
categorySelectedHandler = (id ,e) => 
        this.setState( selectedCategory: id );
    

const categoriesName = this.state.categories.map((category ,index) => 
            // console.log("The current iteration is: " + index);
                let visible_in_pricing_page = category.visible_in_pricing_page
                    
                    if (visible_in_pricing_page) 
                        return <CategoryBtn
                            index = index
                            name=category.title
                            key=category.id
                            selectedId = this.state.selectedCategory
                            clicked=() => this.categorySelectedHandler(category.id)
                />
            
        );

CategoryBtn 组件 -

import React,  Component   from 'react';
import classes from './price-category-btn.css';

const CategoryBtn = props  => 
    
        return (
            <div style=display:"inline" >
                <a>
                    <button 
                    className=  classes.category_btn  
                    onClick=props.clicked>props.name</button></a>
            </div>
        )
    

export default CategoryBtn;

【问题讨论】:

【参考方案1】:

您正在将 selectedId 属性传递给 CategoryBtn 组件,您可以使用它,也可以传入一个布尔值

const categoriesName = this.state.categories.map((category, index) => 
  // console.log("The current iteration is: " + index);
  let visible_in_pricing_page = category.visible_in_pricing_page

  if (visible_in_pricing_page) 
    return <CategoryBtn
    index = 
      index
    
    name = 
      category.title
    
    key = 
      category.id
    
    /** indicate this is the selected button  */
    selected = this.state.selectedCategory === category.id 
    clicked = 
      () => this.categorySelectedHandler(category.id)
    
    />
  
);

在 categoryBtn 组件中返回带有动态类的按钮

<button 
    /** use props.selected to dynamically set the class */
    className=`$classes.category_btn $props.selected` ? classes.selectedCss : ''
    onClick=props.clicked
 >
   props.name
 </button>

在你的 CSS 模块中,你可以有背景颜色的类

.selectedCss
 background-color: lightblue;

【讨论】:

我尝试了您在上面回答的相同代码,但结果是默认情况下 btn 的 BG 颜色显示为绿色。我想要默认类 classes.category_btn 并单击更改为 classes.selectedCss @Ashu 然后根据您的需要修改三元:className=props.selected ? classes.selectedCss : classes.category_btn

以上是关于如何在反应js中更改按钮onClick的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Android:更改背景颜色查看 onClick 按钮

如何使用 onclick 按钮更改悬停颜色

如何更改反应本机按钮的背景颜色

onClick事件更改类名反应js

Onclick背景颜色更改并保存在数据库中

如何更改 CSS 中按钮的背景颜色?