如何使仅选择元素为true的条件-Javascript

时间:2019-05-08 09:24:24

标签: javascript reactjs

如何使仅选择元素为true的条件?我有一个条件可以更改菜单的活动状态,如果元素本身为true,则只希望更改它。现在,由于存在一个真正的元素,因此将条件添加到所有元素。我只需要在元素为true时添加类,对其他未单击的元素保持false。

    submenuClick(padre) {
        const { padreState } = this.state;
        const corriente = { ...padreState };
        const toggle = !corriente[padre];
        this.toggle(corriente);
        corriente[padre] = toggle;

        this.setState({
            padreState: corriente,            
        });
        if(corriente[padre] === true){
            this.setState({
                addClass: !this.state.addClass           
            });
         }
        console.log(corriente);
    }

编辑并添加菜单类的代码,在其中将类添加到所有元素

class Menu extends Component {
    render() {
        let activeClass = ['desplegable'];
        if(this.props.addClass) {
            activeClass.push('active');
        }
        return (
        <li key={this.props.id} className="list__item">
            <button
                title={this.props.menu}
                id={'mn-' + this.props.menu}
                className={activeClass.join(' ')}
                onClick={this.props.submenuClick}
            >
            <Icon icon="auriculares" className="ico-auriculares" />
                {this.props.menu}
            </button>
            {this.props.abrirSubmenu ? (
                <div id="sb-crm" className="submenu">
                    {this.props.submenu.map(hijo => (
                        <h3 className="nav--title">
                            <Icon icon="descargar" className="ico-descargar" />
                            {hijo}
                        </h3>
                    ))}
                    <ul className="list">
                        <li className="list__item">
                            {this.props.descripcion.map(tercerNivel => (
                            <a href={this.props.url} title={this.props.descripcion}>
                                {tercerNivel}
                            </a>
                            ))}
                        </li>
                    </ul>
                    <div className="content-bnt">
                        <button id="desplegar" className="btn btn--rounded" onClick={this.props.desplegarClick}>
                            <Icon icon="flecha" className="ico-flecha"/>
                            <Icon icon="flecha" className="ico-flecha"/>
                        </button>
                    </div>
                </div>
            ) : null}
        </li>
        );
    }
}

如果我单击第二个元素(padre-44),这是我从控制台日志中得到的答复:

{padre-114: false, padre-44: true, padre-50: false}

我认为您必须在“正确”状态下添加一些内容,但是我不知道该怎么做。 非常感谢

2 个答案:

答案 0 :(得分:1)

传递当前this.state.padreState['padre-' + datos.id]的状态值,该值可以为true或false。

Menu
  key={datos.id}
  menu={datos.menu}
  submenu={datos.submenu}
  descripcion={datos.descripcion}
  url={datos.url}
  desplegarClick = {this.desplegarClick} 
  submenuClick={() => this.submenuClick('padre-' + datos.id)}
  abrirSubmenu={this.state.padreState['padre-' + datos.id]}
  addClass={this.state.padreState['padre-' + datos.id]} // here add current state of  padre
  />

答案 1 :(得分:0)

首先,您不需要使用===比较来检查是否为true。仅当(eleVal)足够时,即条件才有效(仅在eleVal为true时转到“ if”块),否则将进入“ else”块。如果您只想对选定的元素执行代码,则可以使用“ onclick”或等效的触发器函数将其纠正,而不是全部编写,只需检查选定元素的“ true / false”值即可