【问题标题】:React onClick receiving an inline style反应 onClick 接收内联样式
【发布时间】:2020-07-15 12:55:28
【问题描述】:

我正在尝试在 React 中编写一个侧边栏,当我单击该侧边栏的每个元素时,它会被激活。但是,我想用内联样式覆盖默认的 UI 库活动样式,但是我在 onClick 函数中的代码无法编译并给我一个错误。如何做到这一点?

class Sidebar extends Component {
    state = {
      navActive : '0'
    }

  render () {
    return (
      <NavPanel dark style={{ backgroundColor: '#2d2e2e', height: '100vh', float:'right'}}>
        <NavTitle style={{ fontFamily: 'IranSans', textAlign: 'Center' }}>
       لوگو اینجا قرار بگیرد
        </NavTitle>
        <NavSection>
          <NavSectionTitle />
          <NavSectionTitle />

          <NavLink key='2' style={linkStyles.base} rightEl={<GiIceCube style={linkStyles.Icon} />} 

          className={this.state.navActive === '2' ? 'active' :' ' }

          onClick={() => this.setState({ navActive:'2' }, style={{ borderStyle:'solid',
          borderWidth:'0px 10px 0px 0px',
          borderColor:'green'}})}>

           داشبورد
          </NavLink>

        </NavSection>
      </NavPanel>

    )
  }
}

export default Radium(Sidebar)

【问题讨论】:

    标签: javascript css reactjs jsx


    【解决方案1】:

    setState 的第二个参数是状态改变后执行的回调。

    所以你必须根据状态指定你的风格。

          <NavLink key='2' rightEl={<GiIceCube style={linkStyles.Icon} />} 
    
          className={this.state.navActive === '2' ? 'active' :' ' }
    
          onClick={() => this.setState({ navActive:'2' })}
          style={ this.state.navActive !== '2' ? {linkSyles.base} : {
          ...linkStyles.base,
          borderStyle:'solid',
          borderWidth:'0px 10px 0px 0px',
          borderColor:'green'}
          }
           >
    

    【讨论】:

    • 这是正确的,但它会覆盖我以前的非活动样式 (style={linkStyles.base} ) 我该如何解决这个问题?
    • @Dorian Oups,对不起,我以前没看到,这里是一个更正
    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 2020-09-05
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多