vue-router和vuex的學習總結

1、vue-router——路由管理vue

 通過本身的學習加項目總結,針對路由這塊內容說下本身的理解:vue-router

路由配置主要有三個關鍵字:route routes routervuex

route(單數)表示一條路由,它是一個對象由兩部分構成(path——路徑;component——組件)數組

例如:homeBtn——homeContent(點擊homeBtn按鈕頁面切換到homeContent組件);sideBtn——sideContent;這是兩條路由(route)ide

若是路由多,這樣一條一條表示顯然不合理。函數

由此出現routes(複數)表示一組路由(路由的數組),上面的兩條路由就能夠這樣表示:學習

 

具體寫法:const routes = [{path:'/home',component:homeContent},{path:'/sidebar',component:sidebarContent}]this

 router表示路由機制(即路由的管理者),實現原理:點擊homeBtn按鈕——到routes裏去查找到‘/home’對應得組件homeContent,並顯示頁面。spa

寫法:const router = new VueRouter({routes:routes}),簡寫:const router = new VueRouter({routes})code

最後將router實例注入到vue根實例中,即可以使用路由

import Router from 'vue-router'
Vue.use(Router)

配置好路由再定義好路由的出口router-view就可使用路由實現頁面跳轉了。

ps:router-link至關於a標籤。

2、vuex——數據狀態管理

簡單說下vuex的做用:主要用於組件直接通信。好比A和B和C爲兄弟組件,組件中都用到name這個字段,A組件中若是對name字段進行更改,那該如何通知B和C組件name字段已經發生變化了呢?這個時候就可使用Vuex來進行通信了。先將name存起來(state管理變量初始狀態的),A組件中經過觸發mutation來通知state中的name發生改變。那麼B和C組件就能夠從vuex獲取state中的name。大概就是這麼個意思。

另外說一下:vuex中的幾個關鍵要素:state、mutation、action以及vuex中自帶的函數:mapState、mapMutation、mapAction、mapGetter(都是我的的理解,若有不當請指出。)

state主要定義一些初始化的變量;

mutation定義修改State的方法,有兩個參數(state、value)

action定義觸發mutation行爲的方法;語法:方法名(context)、經過context.commit來觸發mutation的方法;

getter定義獲取state的方法,參數state;

上面內容主要說如何定義這些變量,下面說下若是在組件中使用這些方法:

第一種狀況:設置/修改變量的兩種方式:

a、在計算屬性中或方法中調用mutation方法:this.$store.commit(‘方法名’,參數值)

b、使用action觸發mutation方法:this.$store.dispatch(mutaion的方法)

官方不建議使用a,建議使用b。

第二種狀況:獲取參數

兩種方式:一、this.$store.state.參數;二、this.$store.getter.方法名

 使用this.$store.state等這些書寫方式太長。因此能夠經過vuex的輔助函數:mapState等來簡化書寫

輔助函數的使用方法:

一、mapGetters/apState放在computed屬性中。

書寫方式:a、...mapGetters(['Getter定義的方法名'])

                 b、參數若是是count:...mapState({state=>state.count})

二、mapMutation和mapAction,通常放在method中寫:...mapMutation(['mutation定義的方法名'])

有錯誤歡迎指正!

相關文章
相關標籤/搜索