簡體   English   中英

單擊按鈕時如何更改文本顏色

[英]How to change text colour when button is clicked

我有一個從 A 到 Z 的按鈕列表,當特定字母有任何品牌時,只有一些按鈕會突出顯示。 當我點擊一個特定的字母時,該按鈕的文本顏色應該會改變。 我嘗試了下面的代碼,但它刪除了其他按鈕和禁用按鈕的突出顯示顏色

constructor(props) {
    super(props)
    this.state = {
        selectedButton :  true
    }
}
getBrandSortData(){
    let btn_class = this.state.black ? "blackButton" : "whiteButton";
    return(
        <div className="BrandPageList_AlphabetContainer">
            <button value="all" className="BrandPageList_AllButton" onClick={this.handleClick}>All</button>
            {brandList.map((item,index) => 
            {
                let disbaled = !this.isBrandCharacterAvailable(item)
                return(
                    <button 
                    disabled= {disbaled}
                    value={item} 
                    key={index} 
                    block="BrandPageList_AlphabetButtons"
                    mods = {{enabled : !disbaled}}
                    onClick={this.handleClick}
                    className={btn_class}
                >
                {item}
                </button>
            )}
                
            )}
        </div>
    )
}
 handleClick = event =>{
    const brandValues = event.target.value
    if(brandValues === "all"){
        return this.setAllBrands()
    }
    else{
        let brandSortDataByCharacter = this.state.brandSortData[brandValues]
       this.setState({
           allBrands:
               {
                   [brandValues]: brandSortDataByCharacter,
                   selectedButton: !this.state.selectedButton
               },
       })
    }
}

我有以下 css 文件

 .blackButton{
    color: white;
  }
  
  .whiteButton{
    color: black;
  }

如何更改文本的顏色,如鏈接所示

您需要創建一個單獨的按鈕組件,以便在每次將更改應用於子項時不重新呈現整個父項...

import { useState ) from 'react';

..

const Button = ({ clickCallback, initClass }) {
  const [ state, setState ] = useState(initClass);

  const toggleColor = () => {
    setState(state === 'whiteButton' ? 'blackButton' : 'whiteButton' );
  }

  const handleClick = () => {
    clickCallback(toggleColor);
  }

  render(
    <button className={ state } onClick={ handleClick } ></button>
  );
}

..

並在父母

import Button from 'location'; // button component

..

// inside the parent component

const clickCallback = toggleColor => {
  this.state.activeButton && this.state.activeButton();
  this.state.activeButton = toggleColor;
}

..

// and in the render

<Button clickCallback={ clickCallback } initClass={ btn_class } />

當然這是一個縮小的例子,添加你需要的屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM