【问题标题】:How do I change the css of classes through react dynamically如何通过动态反应更改类的 css
【发布时间】:2018-04-04 15:34:00
【问题描述】:

我的问题是关于通过另一个类更改类的 CSS。我知道,如果我们要更改的元素是相邻元素或所选元素的同级元素,我只能更改 CSS。

我的目标是在选择链接“血腥玛丽”时更改标题和选项卡类的背景颜色,但我不知道如何实现。 我正在使用 React,我认为它的方式是使用状态。默认值为白色,当血腥玛丽链接处于活动状态时,它会将状态从白色更改为黑色。我还计划更改其他样式,例如字体颜色,但主要思想保持不变,通过 react 动态更改样式。

我已将我的代码剥离为基础,使其看起来更简洁。如果您能提供一些帮助,将不胜感激。

  class Header extends React.Component {
    render () {
        return(
          <div>
            <div className='header'>         
              <li className='tabs'><NavLink className='style' 
              activeClassName='selected'>Home</NavLink></li>

              <li className='tabs'><NavLink className='style' 
              activeClassName='selected'>Team</NavLink></li>

              <div className='dropdown'>
                <div className='tabs'><NavLink className='style projectstab' 
                activeClassName='selected'>Projects</NavLink></div>
                <div className='dropdown-content'>
                  <a>
                    <p className='dropdown-li'>
                    </p>
                    <NavLink activeClassName='bloodyselected'>
                      Bloody Mary
                    </NavLink>
                  </a>
                </div>
              </div>

              <li className='tabs'><NavLink className='style' 
              activeClassName='selected'>Contact Us</NavLink></li>
            </div>
      )
    }
  }

【问题讨论】:

  • 确定选择哪个 NavLink 的函数在哪里?您可以让函数根据哪个导航链接处于活动状态,为标题返回一个额外的类名
  • 我已经省略了最初在我的代码中的“to='/projects/'”

标签: javascript html css reactjs state


【解决方案1】:

classNamestyle 指令接受动态值的插值。您可以使用它来实现您想要的。

class Hello extends React.Component {
  constructor(props) {
    super(props);
    this.state = { style: {} };
    this.bloodyMary = this.bloodyMary.bind(this);
  }

  bloodyMary() {
    this.setState({
      style: { backgroundColor: 'red' },
      class: 'someclass'
    });
  }

  render() {
    return <div style={this.state.style} className={this.state.class}>
      <a onClick={this.bloodyMary}>Bloody Mary</a>
    </div>;
  }
}

看看online demo

【讨论】:

  • 血腥玛丽不是一个按钮,而是网站上的一个链接。这就是为什么有一个“activeclassname”属性。我需要它,以便当链接未激活时,标题将变回白色
  • 概念是一样的,你可以在&lt;a&gt;标签或任何其他元素上使用onClick
  • 谢谢!我现在明白你的意思了。我在所有其他不是血腥玛丽的链接上都放了 onClick,这会恢复更改。只是想知道,我现在正在玩它,当我在血腥玛丽页面上刷新页面时,颜色都设置回默认值。你知道我刷新页面时如何保持血腥玛丽状态吗?
  • 您必须将状态保存在某处。就像在 cookie、本地存储或数据库中一样。如果用户已登录,那么保存在数据库中可能是正确的方法。但这一切都取决于您的应用。
猜你喜欢
  • 2023-04-05
  • 2017-02-09
  • 2015-09-25
  • 1970-01-01
  • 2014-04-29
  • 2021-04-14
  • 2021-04-06
  • 2022-01-24
  • 1970-01-01
相关资源
最近更新 更多