根据状态更改React js更新类名

问题描述 投票:0回答:1

是否可以通过状态更改来更新classNames var(在本例中为“ btClasses”)?

...
    state = {
       active: true
    };

    btClasses = classNames({
      'main-class': true,
      'activeClass': this.state.active
    });

    _handleBtn = () => {
       this.setState({active: !this.state.active});
    } 

    return (
        <button 
           onClick={this._handleBtn} 
           className={btClasses} \>
    );
... 
css reactjs classname
1个回答
0
投票

您可以将btClasses转换为功能:

class MyComponent extends React.Component {
  state = {
    active: true,
  };

  btClasses = () =>
    classNames({
      'main-class': true,
      activeClass: this.state.active,
    });

  _handleBtn = () => {
    this.setState({ active: !this.state.active });
  };

  render() {
    return <button onClick={this._handleBtn} className={btClasses()} />;
  }
}

或简单地内联它:

render() {
  return (
    <button
      onClick={this._handleBtn}
      className={classNames({
        'main-class': true,
        activeClass: this.state.active,
      })}
    />
  );
}
© www.soinside.com 2019 - 2024. All rights reserved.