日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue2.x中vuex的使用方法及应用时的项目文件结构设计以完整demo实例解释

發布時間:2023/12/31 vue 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue2.x中vuex的使用方法及应用时的项目文件结构设计以完整demo实例解释 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本概念:

Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。

目錄結構:

Vuex 并不限制你的代碼結構。但是,它規定了一些需要遵守的規則:

  • 應用層級的狀態應該集中到單個 store 對象中。

  • 提交?mutation?是更改狀態的唯一方法,并且這個過程是同步的。

  • 異步邏輯都應該封裝到?action?里面。

  • 只要你遵守以上規則,如何組織代碼隨你便。如果你的 store 文件太大,只需將 action、mutation 和 getter 分割到單獨的文件。

    使用舉例:

    需求:點擊歌手(singer.vue中)加載歌手詳情信息(singer-detail.vue)

    技術分析:需要將歌手信息傳遞到歌手詳情頁

    實現方法:可通過參數傳入,props接收;也通過Vuex傳遞數據(本demo選擇)


    本人Vuex相關的目錄結構:

    目錄結構解釋:

    index.js(入口文件)

    action.js(異步操作/提交mutation)

    state.js(狀態管理對象)

    getters.js(對state.js進行映射)

    mutations.js(mutation)

    mutation-types.js(mutation常量)(使用常量替代 Mutation 事件類型,簡化寫法,參考官網)

    源碼及關鍵代碼解釋:

    actions.js(由于本demo中并未使用異步操作,因此不含無需使用actions)

    mutation-types.js

    /*** Created by xiaoqiang on 21/12/2017.*/ export const SET_SINGER = 'SET_SINGER'
    mutations.js

    /*** Created by xiaoqiang on 21/12/2017.*/ import * as types from './mutation-types'const mutations = {[types.SET_SINGER](state, singer) {state.singer = singer} } export default mutations
    state.js

    /*** Created by xiaoqiang on 21/12/2017.*/ const state = {singer: {} } export default state


    getter.js

    /*** Created by xiaoqiang on 21/12/2017.*/ export const singer = state => state.singer

    index.js

    /*** Created by xiaoqiang on 21/12/2017.*/ import Vue from 'vue' import Vuex from 'vuex' import * as actions from './actions' import * as getters from './getters' import state from './state' import mutations from './mutations' // 用于檢測組件狀態(打印日志信息) import createLogger from 'vuex/dist/logger'Vue.use(Vuex)// 控制嚴格模式和plugins只在開發模式下生效 const debug = process.env.NODE_ENV !== 'production' // 初始化Store export default new Vuex.Store({actions,getters,state,mutations,strict: debug,plugins: debug ? [createLogger()] : [] })
    將Store注入Vue中:

    singer.vue相關代碼詳解:


    singer-detail.vue中相關代碼詳解:


    Vuex原理:

    之所以將原理圖放在這里,是因為結合代碼,現在再看原理圖就比較容易理解了:


    運行結果:

    點擊singer.vue中的歌手,跳轉至singer-detail.vue后的運行結果:


    第一次點擊prev state中的singer會是一個空對象


    返回后再次點擊,createLogger插件會輸出前一次數據以及當前一次數據值,記錄數據變化。


    總結

    以上是生活随笔為你收集整理的Vue2.x中vuex的使用方法及应用时的项目文件结构设计以完整demo实例解释的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。