1
resposta

React - como adicionar uma classe a outro elemento com base em uma ID.

Olá Pessoal, tudo bem?

Estou criando uma pagina onde recebo informações de um banco de dados para criar botoes. tenho dois tipos de botões : seleção múltipla e seleção simples.

Para criar o .map de botões tive que criar um componente separado.

import React from 'react';

export default class ButtonAddAssessment extends React.Component { 

  constructor(props) {
    super(props);
    this.state = {
      button: this.props.button,
    };
    this.buttonActiveHandler = this.buttonActiveHandler.bind(this);
  }

  buttonActiveHandler(){
    let filter = this.state.button.filterMultiple; ***Aqui consigo saber se o botão é multiplo ou não.
    const oldStatus = this.state.button.status;
    if(filter === '1'){
      this.state.button.status = (!oldStatus ? 'active' : '');
    }   
    this.setState({
      button: this.props.button,
    });
  }
  render() {
    return (
    <button
      className={`btn btn-light-gray-block btn-block ${this.state.button.status}`}
      id={this.state.button.filterMultiple}
      onClick={this.buttonActiveHandler}
    >
      <span className="btn-name-block">{this.state.button.name}</span>
      <span className="btn-name-block">{this.state.button.parentName}</span>
    </button>
  );
  }
}

O que preciso fazer agora que não estou conseguindo é:

Quando clicar no botão com o 'filterMultiple = 1' além de adicionar o a classe 'active' a ele mesmo, adicionar uma classe disable nos botões 'filterMultiple = 0'.

E vice-versa.

Como posso fazer isso?

Obrigado pessoal.

1 resposta

Fala Fellipe Abreu , tudo bom?

Pelo que eu consegui abstrair, quando você clicar no item 1 do seu array você quer que ele fique ativo e os outros fiquem disable.

Todos os elementos do seu array que está no estado sendo objetos, você pode fazer com que ao clicar, você faz um map no array passando por todos os itens e verificando se o id do clicado é igual ao que está sendo passado em cada volta do map e faz uma operação de adicionar a classe active ou o disabled :)