国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

navleft

Tecode / 533人閱讀

摘要:判斷當(dāng)前登陸用戶對(duì)是否有權(quán)限如果當(dāng)前用戶是如果當(dāng)前是公開的當(dāng)前用戶有此的權(quán)限有沒有中如果當(dāng)前用戶有此的某個(gè)子的權(quán)限根據(jù)的數(shù)據(jù)數(shù)組生成對(duì)應(yīng)的標(biāo)簽數(shù)組使用遞歸調(diào)用根據(jù)的數(shù)據(jù)數(shù)組生成對(duì)應(yīng)的標(biāo)簽數(shù)組使用遞歸調(diào)用得到當(dāng)前請(qǐng)求的路由路徑如果當(dāng)前用戶

class LeftNav extends Component {

/*
判斷當(dāng)前登陸用戶對(duì)item是否有權(quán)限
*/
hasAuth = (item) => {

const {key, isPublic} = item

const menus = memoryUtils.user.role.menus
const username = memoryUtils.user.username
/*
1. 如果當(dāng)前用戶是admin
2. 如果當(dāng)前item是公開的
3. 當(dāng)前用戶有此item的權(quán)限: key有沒有menus中
 */
if(username==="admin" || isPublic || menus.indexOf(key)!==-1) {
  return true
} else if(item.children){ // 4. 如果當(dāng)前用戶有此item的某個(gè)子item的權(quán)限
  return !!item.children.find(child =>  menus.indexOf(child.key)!==-1)
}

return false

}

/*
根據(jù)menu的數(shù)據(jù)數(shù)組生成對(duì)應(yīng)的標(biāo)簽數(shù)組
使用map() + 遞歸調(diào)用
*/
getMenuNodes_map = (menuList) => {

return menuList.map(item => {
 
  if(!item.children) {
    return (
      
        
          
          {item.title}
        
      
    )
  } else {
    return (
      
          
          {item.title}
        
        }
      >
        {this.getMenuNodes(item.children)}
      
    )
  }

})

}

/*
根據(jù)menu的數(shù)據(jù)數(shù)組生成對(duì)應(yīng)的標(biāo)簽數(shù)組
使用reduce() + 遞歸調(diào)用
*/
getMenuNodes = (menuList) => {

// 得到當(dāng)前請(qǐng)求的路由路徑
const path = this.props.location.pathname

return menuList.reduce((pre, item) => {

  // 如果當(dāng)前用戶有item對(duì)應(yīng)的權(quán)限, 才需要顯示對(duì)應(yīng)的菜單項(xiàng)
  if (this.hasAuth(item)) {
    // 向pre添加
    if(!item.children) {
      pre.push((
        
          
            
            {item.title}
          
        
      ))
    } else {

      // 查找一個(gè)與當(dāng)前請(qǐng)求路徑匹配的子Item
      const cItem = item.children.find(cItem => path.indexOf(cItem.key)===0)
      // 如果存在, 說明當(dāng)前item的子列表需要打開
      if (cItem) {
        this.openKey = item.key
      }


      // 向pre添加
      pre.push((
        
          
          {item.title}
        
          }
        >
          {this.getMenuNodes(item.children)}
        
      ))
    }
  }

  return pre
}, [])

}

/*
在第一次render()之前執(zhí)行一次
為第一個(gè)render()準(zhǔn)備數(shù)據(jù)(必須同步的)
*/
componentWillMount () {

this.menuNodes = this.getMenuNodes(menuList)

}

render() {

// debugger
// 得到當(dāng)前請(qǐng)求的路由路徑
let path = this.props.location.pathname
console.log("render()", path)
if(path.indexOf("/product")===0) { // 當(dāng)前請(qǐng)求的是商品或其子路由界面
  path = "/product"
}

// 得到需要打開菜單項(xiàng)的key
const openKey = this.openKey

return (
  

硅谷后臺(tái)

{ this.menuNodes }
)

}
}

/*
withRouter高階組件:
包裝非路由組件, 返回一個(gè)新的組件
新的組件向非路由組件傳遞3個(gè)屬性: history/location/match
*/
export default withRouter(LeftNav)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/106424.html

相關(guān)文章

  • 原生js實(shí)現(xiàn)移動(dòng)端+pc端 輪播插件

    摘要:原生寫的輪播兼容移動(dòng)端插件,支持輪播速度,輪播內(nèi)容,輪播間隔,手勢(shì)靈敏度自定義,導(dǎo)航圓點(diǎn)點(diǎn)擊跳轉(zhuǎn)手勢(shì)滑動(dòng)。使用說明文件包含小部分語法編寫的文件,在移動(dòng)端有兼容性問題,僅供于源碼參考。移動(dòng)端跟端開發(fā)引用文件直接下載進(jìn)行引入使用。 slide.js 原生js寫的輪播兼容 pc+移動(dòng)端 插件,支持輪播速度,輪播內(nèi)容,輪播間隔,手勢(shì)靈敏度自定義,導(dǎo)航圓點(diǎn)點(diǎn)擊跳轉(zhuǎn),手勢(shì)滑動(dòng)。 使用說明:sli...

    leanxi 評(píng)論0 收藏0
  • 45個(gè)實(shí)用的JavaScript小貼士、小技巧和最佳實(shí)踐

    摘要:翻譯正文第一次聲明變量時(shí),請(qǐng)不要忘記使用關(guān)鍵字聲明使用代替空字符串轉(zhuǎn)成布爾值都為每行代碼的末尾最好都加上個(gè)分號(hào)最好給對(duì)象都添加上構(gòu)造函數(shù)在使用和盡量小心。 翻譯介紹 翻譯標(biāo)題:45 Useful JavaScript Tips, Tricks and Best Practices 翻譯來源:http://modernweb.com/2013/12/23/45-useful-java...

    Moxmi 評(píng)論0 收藏0
  • 【譯】45種Javascript技巧大全

    摘要:對(duì)進(jìn)行序列化和反序列化避免使用和構(gòu)造函數(shù)使用和構(gòu)造函數(shù)是非常昂貴的操作,因?yàn)槊看嗡麄兌紩?huì)調(diào)用腳本引擎將源代碼轉(zhuǎn)換成可執(zhí)行代碼。 原文:45 Useful JavaScript Tips, Tricks and Best Practices 譯文:45個(gè)有用的JavaScript技巧,竅門和最佳實(shí)踐 譯者:dwqs 在這篇文章中,我將分享一些JavaScript常用的技巧,竅門和最...

    hufeng 評(píng)論0 收藏0
  • JavaScript編程注意事項(xiàng)、技巧大全

    摘要:數(shù)組元素刪除應(yīng)使用。用來序列化與反序列化結(jié)果為的值與對(duì)象相同不要使用或者函數(shù)構(gòu)造器和函數(shù)構(gòu)造器的開銷較大,每次調(diào)用,引擎都要將源代碼轉(zhuǎn)換為可執(zhí)行的代碼。 收藏自 JavaScript奇技淫巧45招 JavaScript是一個(gè)絕冠全球的編程語言,可用于Web開發(fā)、移動(dòng)應(yīng)用開發(fā)(PhoneGap、Appcelerator)、服務(wù)器端開發(fā)(Node.js和Wakanda)等等。JavaSc...

    Shimmer 評(píng)論0 收藏0
  • 45 個(gè)實(shí)用的 JavaScript 技巧、竅門和最佳實(shí)踐

    摘要:使用閉包實(shí)現(xiàn)私有變量譯者添加未在構(gòu)造函數(shù)中初始化的屬性在語句結(jié)尾處使用分號(hào)在語句結(jié)尾處使用分號(hào)是一個(gè)很好的實(shí)踐。總結(jié)我知道還有很多其他的技巧,竅門和最佳實(shí)踐,所以如果你有其他想要添加或者對(duì)我分享的這些有反饋或者糾正,請(qǐng)?jiān)谠u(píng)論中指出。 showImg(http://segmentfault.com/img/bVbJnR); 如你所知,JavaScript是世界上第一的編程語言(編者注:2...

    魏憲會(huì) 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<