iview-admin 動態(tài)菜單

開門見山,步入正題。

1.首先要明確以下幾點 (這無序列表難受==)

  • 菜單list由后端生成
  • 菜單list必須和 routers.js保持一致
  • routers.js 里面該怎么寫,就怎么寫,不需要刪除
  1. 需要有一丟對 vuex的基本操作,對于iview-admin有了一定了解,那么巧了,我沒有了解,那么就做不了了嗎?NO,一樣可以。
    • 先搞一下store/module/app.js ,寫一個獲取菜單信息的actions:getMenuData,
  getMenuData ({ commit, rootState }, params) {
      mainList(params).then(res => {
        commit('setMenuRspList', res.data.data)
      }).catch(e => {
        console.log(e)
      })
    }

解釋下:
1). mainList 是你獲取list的一個方法,即

 axios.request({
    url:'',
    data(params):{},
    method:''
}).then(res=>{

}).catch(e=>{

})

2). setMenuRspList 是你定義好的方法,在state定義下:menuRspList:[ ],找不到在哪里?那么你可以把這個文件從頭看一遍了,對,看一遍!
ok! 此時你的菜單已經獲取完了,開始渲染?。?!

  1. 現在該操作一下mutations了,在里面操作下你的setMenuRspList,
 setMenuRspList (state, list) {
      let len = list.length
      for (let i = 0; i < len; i++) {
        state.menuRspList.push(list[i])
      }

      state.hasInfo = true
    }

list就是你的菜單list,穿過來一定是個數組,因為是list

  1. 現在開始表演了
    修改gettters,什么 你又找不到了? 好吧,再把app.js從頭到尾看一遍,(ctrl+f更簡單!一般人不告訴他)
    menuList: (state, getters, rootState) => getMenuByRouter(state.menuRspList ),

改好了嗎?
5.還有最后一步,就是在入口處調用下你的菜單路由:router/index.js中,隨便在router.beforeEach中添加下

store.dispatch('getMenuData').then(res => {})

就好了
6.調用下吧,運行你的項目npm run dev是不是看到效果了呢?
7.注意vuex的運用有時候配置不對,菜單出現了,但是刷新就消失了為什么呢?
原因就是讓你看vuex了,老實交代是不是沒看,就知道不看,后悔不,沒關系,我可以告訴你這個秘密哦。vuex中store并不是永久存儲的,什么?解決辦法?
修改下getter方法,或者在router\index.js里面做下文章,每次刷新都去請求下,就ok了,思路有了,接下來看你的表演了。

照著我的教程,我寫了個小demo,附地址:github地址:https://github.com/Timedrugs/iview-admin-menu

第一版的時候我沒有寫第5步,很多人就出現了問題,其實你想想vue的生命周期,就知道怎么回事了
OK!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容