欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

vuex與模塊化的示例分析

這篇文章將為大家詳細講解有關vuex與模塊化的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為酉陽土家族苗族等服務建站,酉陽土家族苗族等地企業(yè),進行企業(yè)商務咨詢服務。為酉陽土家族苗族企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

示例教程

例子是在vue-cli基礎上構建的,以下是src文件下的內(nèi)容目錄。

├── App.vue
├── components // 組件文件夾
│ ├── tab1.vue
│ ├── tab2.vue
│ ├── tab3.vue
│ └── tab4.vue
├── main.js // vue的主文件入口
├── router // vue-router文件
│ └── index.js
└── store // vuex文件
 ├── action.js // action
 ├── getter.js // getter
 ├── index.js // vuex的主文件
 ├── module // 模塊文件
 │ ├── tab2.js
 │ └── tab3.js
 ├── mutation-type.js // mutation常量名文件
 └── mutation.js // mutation

效果是這樣的(不要嫌棄簡陋啊啊?。?/p>

vuex與模塊化的示例分析

在這個例子里,把文檔里提到的vuex的相關知識都使用了一遍,包括模塊相關的知識,基本把一般的使用場景都覆蓋了吧。

那不廢話了,開始吧。

首先app.vue和router兩部分是和路由相關,就是很簡單的東西,看看文檔就能了解。

vuex的模塊化

在寫這個例子之前看了很多的開源項目的代碼,一開始蠻新鮮的,畢竟之前項目中并沒有深度使用過vuex,基本就是一個store.js里把vuex的功能就都完成了,但是項目復雜肯定不能這么寫,正好現(xiàn)在有這個需求,我就想寫個例子理一理這方面的思路。結果還是蠻簡單的。

store文件里的內(nèi)容就是按照vuex五個核心概念建立的,這么做的好處對于梳理業(yè)務邏輯和后期維護都是極大的方便,比如mutation.js和mutation-type.js這兩個文件:

// mutation-type.js

const CHANGE_COUNT = 'CHANGE_COUNT';


export default {
 CHANGE_COUNT
}
// mutation.js

import type from './mutation-type'

let mutations = {
 [type.CHANGE_COUNT](state) {
 state.count++
 }
}

export default mutations

將mutation中的方法名單獨作為常量提取出來,放在單獨的文件中,用的時候引用相關的內(nèi)容,這樣非常便于管理和了解有哪些方法存在,很直觀。另一方面,有時候可能需要用到action,可以使用相同的方法名,只要再引入常量的文件就行。

// action.js
import type from './mutation-type'

let actions = {
 [type.CHANGE_COUNT]({ commit }) {
 
 commit(type.CHANGE_COUNT)
 
 }
}

export default actions

怎么樣,這樣是不是看起來就沒有寫在一個文件里那么亂了。

...mapGetters和...mapActions

tab1.vue里:

// tab1.vue
<template>
 <div>
 <p>這是tab1的內(nèi)容</p>
 <em @click="add">{{count}}</em>
 <p>getter:{{NewArr}}</p>
 </div>
</template>


<script>
import { mapActions, mapGetters } from "vuex";
import type from "../store/mutation-type";
export default {
 computed: {
 ...mapGetters([
 'NewArr'
 ]),
 count: function() {
 return this.$store.state.count;
 },
 },
 methods: {
 ...mapActions({
 CHANGE_COUNT: type.CHANGE_COUNT
 }),
 add: function() {
 this.CHANGE_COUNT(type.CHANGE_COUNT);
 }
 }
};
</script>

<style lang="" scoped>

</style>

index.js文件里:

import Vuex from 'vuex'
import Vue from 'vue'
import actions from './action'
import mutations from './mutation'
import getters from './getter'
import tab2 from './module/tab2'
import tab3 from './module/tab3'

Vue.use(Vuex)

let state = {
 count: 1,
 arr:[]
}


let store = new Vuex.Store({
 state,
 getters,
 mutations,
 actions,
 modules:{
 tab2,tab3
 }
 
})

export default store

vuex提供了一種叫做輔助函數(shù)的東西,他的好處能讓你在一個頁面集中展示一些需要用到的東西,并且在使用的時候也可以少寫一些內(nèi)容,不過這個不是必須,根據(jù)自己需要取用。

需要說明的是,他們兩個生效的地方可不一樣。

...mapGetters寫在本頁面的計算屬性中,之后就可以像使用計算屬性一樣使用getters里的內(nèi)容了。

...mapActions寫在本頁面的methods里面,既可以在其他方法里調(diào)用,甚至可以直接寫在@click里面,像這樣:

<em @click="CHANGE_COUNT">{{count}}</em>

醬紫,tab1里面的數(shù)字每次點擊都會自增1。

mudule

vuex的文檔里對于模塊這部分寫的比較模糊,還是得自己實際使用才能行。

在本例子中,我設置了兩個模塊:tab2和tab3,分別對應著同名的兩個組件,當然,我這樣只是為了測試,實際看tab2就可以。

// module/tab2.js
const tab2 = {
 state: {
 name:`這是tab2模塊的內(nèi)容`
 },
 mutations:{
 change2(state){
  state.name = `我修改了tab2模塊的內(nèi)容`
 }
 },
 getters:{
 name(state,getters,rootState){
  console.log(rootState)
  return state.name + ',使用getters修改'
 }
 }
}

export default tab2;
// tab2.vue
<template>
 <div>
 <p>這是tab2的內(nèi)容</p>
 <strong @click="change">點擊使用muttion修改模塊tab2的內(nèi)容:{{info}}</strong>
 <h5>{{newInfo}}</h5>
 </div>
</template>


<script>
export default {
 mounted() {
 // console.log(this.$store.commit('change2'))
 },
 computed: {
 info: function() {
 return this.$store.state.tab2.name;
 },
 newInfo(){
 return this.$store.getters.name;
 }
 },
 methods: {
 change() {
 this.$store.commit('change2')
 }
 }
};
</script>

<style lang="" scoped>

</style>

這個例子里主要是看怎么在頁面中調(diào)用模塊中的stated等。

首先說state,這個很簡單,在頁面中這樣寫就行:

this.$store.steta.tab2(模塊名).name

在本頁面的mounted中console一下$store,可以看到模塊中,stete加了一層嵌套在state中的。

至于action,mutation,getter,和一般的使用方法一樣,沒有任何區(qū)別。

還有就是,在getter和action中,可以通過rootState獲得根結構的state,mutation中沒有此方法。

關于“vuex與模塊化的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

當前文章:vuex與模塊化的示例分析
分享鏈接:http://chinadenli.net/article10/ghocgo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站設計公司網(wǎng)站改版、營銷型網(wǎng)站建設、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
大香蕉网国产在线观看av| 国产不卡的视频在线观看| 久草视频在线视频在线观看| 亚洲天堂一区在线播放| 日韩欧美一区二区黄色| 91香蕉视频精品在线看| 日本少妇中文字幕不卡视频| 国产亚洲精品久久99| 五月婷婷六月丁香在线观看| 日韩女优精品一区二区三区| 99久久精品久久免费| 伊人国产精选免费观看在线视频| 欧美不卡一区二区在线视频| 国产精品免费视频视频| 色涩一区二区三区四区| 欧美精品一区二区水蜜桃| 亚洲天堂精品1024| 色哟哟哟在线观看视频| 精品老司机视频在线观看| 国产一级二级三级观看| 天堂热东京热男人天堂| 日韩女优精品一区二区三区| 99久久人妻中文字幕| 亚洲一区二区亚洲日本| 不卡在线播放一区二区三区| 欧洲一级片一区二区三区| 国产日韩欧美在线亚洲| 国产又黄又爽又粗视频在线| 91插插插外国一区二区婷婷| 精品一区二区三区三级视频| 在线观看国产成人av天堂野外| 在线中文字幕亚洲欧美一区| 都市激情小说在线一区二区三区| 日本欧美一区二区三区高清| 99在线视频精品免费播放| 麻豆欧美精品国产综合久久| 欧美日韩免费观看视频| 黑鬼糟蹋少妇资源在线观看| 亚洲精品偷拍视频免费观看| 日本一本在线免费福利| 色综合伊人天天综合网中文|