首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用react和react-state关闭侧边栏

结合使用react和react-state关闭侧边栏
EN

Stack Overflow用户
提问于 2021-03-09 04:01:57
回答 1查看 17关注 0票数 0

我写了一个静态侧边栏,每个图标都会打开一个“子侧边栏”onclick。我用react-state处理不同“子边栏”之间的切换。

但我没能管理好第二次点击图标时,子工具条会关闭。有谁知道怎么做吗?提前谢谢。

代码语言:javascript
复制
import React, { Component } from 'react';
import { GrAdd, BsCollection, IoSettingsOutline } from '../icons';

import New from './sidebars/new';
import Collection from './sidebars/collection';
import Settings from './sidebars/settings';

import '../css/StaticBar.css'

class StaticBar extends Component {
    constructor(props) {
        super(props)
        this.state = {
            selected: 0,
        }
    }

    render() { 

       
        return ( 
            <div className="StaticBar">
            <ul>
            
                <li className="ListItem" onClick={() => this.setState({ selected: 0 })}>
                   <GrAdd color="white"/>
                </li>
          
                <li className="ListItem"  onClick={() => this.setState({ selected: 1 })}>
                   <BsCollection color="white" />
                </li>

                <li className="ListItem" onClick={() => this.setState({ selected: 2 })}>
                    <IoSettingsOutline color="white" />
                </li>
            </ul>

            {(this.state.selected === 0) && <New />}
            {(this.state.selected === 1) && <Collection />}
            {(this.state.selected === 2) && <Settings />}

            </div>
         );
    }
}
 
export default StaticBar;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-09 04:12:06

您可以使用此条件setState逻辑

代码语言:javascript
复制
    import React, { Component } from 'react';
    import { GrAdd, BsCollection, IoSettingsOutline } from '../icons'; 
    import New from './sidebars/new';
    import Collection from './sidebars/collection';
    import Settings from './sidebars/settings';
    
    import '../css/StaticBar.css'
    
    class StaticBar extends Component {
        constructor(props) {
            super(props)
            this.state = {
                selected: 0,
            }
        }
    
        render() { 
    
           
            return ( 
                <div className="StaticBar">
                <ul>
                
                    <li className="ListItem" onClick={() => this.setState({ selected: 0 })}>
                       <GrAdd color="white"/>
                    </li>
              
                    <li className="ListItem"  onClick={() => this.setState({ selected: (this.state.selected==1 ? 0 : 1) })}>
                       <BsCollection color="white" />
                    </li>
    
                    <li className="ListItem" onClick={() => this.setState({ selected: ( this.state.selected==2 ? 0 : 2) })}>
                        <IoSettingsOutline color="white" />
                    </li>
                </ul>
    
                {(this.state.selected === 0) && <New />}
                {(this.state.selected === 1) && <Collection />}
                {(this.state.selected === 2) && <Settings />}
    
                </div>
             );
        }
    }
     
    export default StaticBar;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66536353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档