Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问React中的子元素属性?_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript 如何访问React中的子元素属性?

Javascript 如何访问React中的子元素属性?,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我正在React Redux上创建多级手风琴菜单组件 class MultiLevelAccordianMenu extends PureComponent { constructor(props){ super(props); this.toggleList = this.toggleList.bind(this); } toggleList(event){ console.log(event) } re

我正在React Redux上创建多级手风琴菜单组件

class MultiLevelAccordianMenu extends PureComponent {
    constructor(props){
        super(props);
        this.toggleList = this.toggleList.bind(this);

    }
    toggleList(event){
        console.log(event)
    }
    render(){
        return( <ul className="cd-accordion-menu animated">
            <li className="has-children" onClick={this.toggleList}>
                <input type="checkbox" name ="group-1" id="group-1" defaultChecked />
                <label htmlFor="group-1">Group 1</label>

                <ul>
                    <li className="has-children">
                        <input type="checkbox" name ="sub-group-1" id="sub-group-1" />
                        <label htmlFor="sub-group-1">Sub Group 1</label>

                        <ul>
                            <li><a href="#0">Image</a></li>
                            <li><a href="#0">Image</a></li>
                            <li><a href="#0">Image</a></li>
                        </ul>
                    </li>
                 </ul>
             </li>
          </ul>        );
    }
  }
export default MultiLevelAccordianMenu;
class多级菜单扩展了PureComponent{
建造师(道具){
超级(道具);
this.toggleList=this.toggleList.bind(this);
}
切换列表(事件){
console.log(事件)
}
render(){
返回(
  • 第一组
    • 第1分组
); } } 导出默认多级菜单;
单击父“li”元素时,我想切换子“ul”元素。 我已经写了一个切换函数。在这种情况下,如何访问和设置子属性以使其隐藏和显示

单击即可使用和更改它。只需将子元素的className设置为动态:

class MultiLevelAccordianMenu extends PureComponent {
     constructor(props){
        super(props);
        this.state = {
          isActive : false
        };
        this.toggleList = this.toggleList.bind(this);
     }
     toggleList(event){
        this.setState({isActive: !this.state.isActive});
     }
    render(){
        ....
        <li className="has-children" onClick={this.toggleList}>
        .....               
        <ul className={this.state.isActive ? "active" : ""}>
          ....

}
如果要添加动画,可以使用css规则:


你在用jquery吗?不,我没有用jquery。谢谢@Roman Romanovsky。我会试试这个,但这只对一个孩子有效。如果我们想为父母、子女和孙子孙女实现这一目标,我们该怎么做?例如:render(){..
                                • <
                                  ul{
                                    visibility: hidden;
                                  }
                                  .active{ 
                                    visibility: visible;
                                  }
                                  
                                  ul{
                                     max-height: 0;
                                     transition: max-height 0.15s ease-out;
                                     overflow: hidden;
                                  }
                                  ul.active {
                                     max-height: 500px;
                                     transition: max-height 0.25s ease-in;
                                  }