簡體   English   中英

更改激活時 material-ui 按鈕的顏色

[英]Change the color of a material-ui Button when it's active

按鈕點擊前 按鈕點擊后 我正在嘗試更改 material-ui 按鈕單擊時的顏色。 我有多個按鈕。 當我點擊一個按鈕時,它們的顏色會同時改變。 我怎樣才能只更改被點擊的那個。 我有以下代碼,但它沒有做這項工作,它應該做。

   constructor(props){
      super(props);
      this.state={
      videos : data,
      filtered: data,
      color : "primary"
    };
   }

   handleClick = (event) => {
    const value = event.currentTarget.value;
    console.log(event);
    this.setState({
      filtered: this.state.videos.filter(item => { 
          return item.category === value
      }),
      color: "secondary"
    });
  }

  <Button value="java" onClick={this.handleClick} variant="contained" 
   color={this.state.color} >java</Button> 
  <Button value="React" onClick={this.handleClick} 
   variant="contained" color={this.state.color}>React</Button> 
  <Button value="C#" onClick={this.handleClick}  
   variant="contained" color={this.state.color}>C#</Button> 

看起來這個 state 更改不在傳遞給setState()的 object 中,它應該是:

this.setState({
    filtered: this.state.videos.filter(item => { 
        return item.category === value
    }),
    Color: "secondary"
});
    handleClick = (event) => {
        const value = event.currentTarget.value;
        this.setState({ filtered: this.state.videos.filter(item => { 
                return item.category === value
            }), {Color: "secondary"}
        })
   }

您剛剛在過濾器的回調 function 中插入了顏色,只需更改它即可

請檢查這個例子:

import React, {useState} from 'react';
import {makeStyles} from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';

export default function ContainedButtons() {
    const [color, setColor] = useState('primary');

    return (
        <div>
            <Button variant="contained" color={color} onClick={() => {setColor('secondary')}}>
                Click Me
            </Button>
        </div>
    );
}

暫無
暫無

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

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