antd 實現側導航欄只展開當前導航,其他關閉,效果如下
菜單的數據結構是這樣的,子菜單要包含主菜單的名字
antd導航有個openkeys屬性和onOpenChange事件,執行onOpenChange事件時,把展開的列表賦值過去
// 選中當前菜單收起其他菜單 onOpenChange = (openKeys)=>{ let keysLen = openKeys.length; if(keysLen>1){ var trueOpen = openKeys.filter(item=>{
// 最后一個是當前展開的,把當前展開以及父導航設置為openkeys return openKeys[keysLen-1].includes(item) }) this.setState({openKeys:trueOpen}) }else{ this.setState({openKeys:openKeys}) } }
問題,adnt會把所有已經點擊過的都傳過來,所以只展開當前的,需要把其他的關閉就要確定當前導航的openkes