web-dev-qa-db-fra.com

Changer le style d'un bouton au clic

Est-il possible de changer background-color de mon bouton onClick fonction?

ex. Cliquez sur background-color: black, un autre clic background-color: white

J'ai essayé quelque chose comme this.style, pas de résultat.

J'ai réussi à faire en sorte que la superposition fonctionne et à y insérer les données nécessaires. Mais n'a pas réussi à trouver un post qui pourrait m'aider. J'utilise react-bootstrap. Ceci est mon code.

  const metaDataOverlay = (
  <div>
  <style type="text/css">{`
  .btn-overlay {
    background-color: white;
    margin-right: -15px;
    margin-left: -15px;
    padding-bottom: -20px;
    padding: 0;
  }
  `}</style>

      <ButtonToolbar>
        <ButtonGroup>
        <OverlayTrigger trigger={['hover', 'focus']} placement="left" overlay={popoverHoverFocus}>
          <Button bsStyle="overlay" onClick={ clicked } onKeyPress={ keypress }>
            <div className={bemBlocks.item().mix(bemBlocks.container("item"))} data-qa="hit">
              <a href={url} onClick={(e)=>{e.preventDefault(); console.log("123")}}>
                <div>
                  <img data-qa="poster" className={bemBlocks.item("poster")} src={result._source.poster} width="240" height="240"/>
                </div>
              </a>
            </div>
          </Button>
        </OverlayTrigger>
        </ButtonGroup>
      </ButtonToolbar>

    </div>
  )
15
user3350597

Vous pouvez essayer d'utiliser state pour stocker la couleur. Peut-être que cela vous donnerait l’idée de résoudre le problème:

class Test extends React.Component {
    constructor(){
        super();

        this.state = {
           black: true
        }
    }

    changeColor(){
       this.setState({black: !this.state.black})
    }

    render(){
        let btn_class = this.state.black ? "blackButton" : "whiteButton";

        return (
             <button className={btn_class} onClick={this.changeColor.bind(this)}>
                  Button
             </button>
        )
    }
}

React.render(<Test />, document.getElementById('container'));

Voici un violon.

25
Boky

Vous avez également accès à l'événement et à la cible actuelle de l'événement.

handleClick = (event) => {
   // accessible
   event.target.style
   event.target.classList //to change style via css
}
14
Dmitriy Kovalenko