javascript - 使用背景覆盖 react 添加/删除和切换侧边栏类

标签 javascript jquery html css reactjs

这是我的代码:http://codepen.io/rafaelfndev/pen/gmqmvo

我需要添加类:

.overflowbody

.overlay-active.overlay

.sidebar-active#sidebar

我需要在单击 .show-sidebar 时添加独立于具有此类的组件的位置。如果我点击.hide-sidebar,我需要删除这个类,如果我点击.toggle-class,我需要切换这个类...

我知道如何使用 jQuery 执行此操作,但我在某处读到使用 jQuery 操作 React 元素是错误的...

我需要完全按照这段代码做,但没有 jQuery,只使用 React 模式:

$('.toggle-sidebar').click(function(){
    $('#sidebar').toggleClass('sidebar-active');
    $('body').toggleClass('overflow');
    $('overlay').toggleClass('overlay-active');
});

$('.show-sidebar').click(function(){
    $('#sidebar').addClass('sidebar-active');
    $('body').addClass('overflow');
    $('overlay').addClass('overlay-active');
});

$('.hide-sidebar, overlay').click(function(){
    $('#sidebar').removeClass('sidebar-active');
    $('body').removeClass('overflow');
    $('overlay').removeClass('overlay-active');
});

最佳答案

我不确切知道您将哪些元素用于侧边栏,但我会将其视为 div,将其他元素视为按钮。

您可以在主要组件(控制侧边栏和按钮的组件)上保持状态,并通过每个按钮的 onClick 更改状态。在这种状态下,您可以在侧边栏上设置一些样式或使用类似 classenames lib 的类激活类

我做了这个codepen展示了如何遵循这种方法,希望对您有所帮助。它基本上是一个 SideBar 组件,接收一个名为“show”的 Prop ,并使用它来改变 div 样式。 App 组件有一个“显示”状态,它会随着按钮的点击而改变,并将其传递给 SideBar 组件。

代码如下:

class SideBar extends React.Component{
  render() {
    return <div style={{display: this.props.show?'block':'none'}}>
      I am a side bar!
    </div>
  }; 
}

class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {show: true};
  }

  render(){
    return <div>
      <SideBar show={this.state.show}/>
      <button onClick={()=>this.setState({show: !this.state.show})} >toggle</button>
      <button onClick={()=>this.setState({show:true})} >add</button>
      <button onClick={()=>this.setState({show:false})}>remove</button>
    </div>
  }
}

ReactDOM.render(<App/>, document.getElementById('container'));

关于javascript - 使用背景覆盖 react 添加/删除和切换侧边栏类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43164081/

相关文章:

jquery - 如何在 jQuery 中查找标签名称

html - flexbox 中的图像无法正确缩放

javascript - 如果我设置 min-height 和 max-height,哪个优先?

javascript - 有人知道如何获取返回实际数字而不是 'Auto' 的 div 标签的 z-index 吗?

javascript - 将数字的小数位四舍五入到 0.05 的下一个倍数

jquery - 使用 JQuery 方法覆盖类以插入样式元素

html - 仅通过 CSS 选择父 ul 下的 li

javascript - 查找 JavaScript 错误代码列表

javascript - 如何根据屏幕宽度将我的导航栏类更改为另一个导航栏类?

javascript - Jquery从选项菜单获取表单值