最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vuex的四個常用核心概念解讀

 更新時間:2024年11月08日 11:37:00   作者:帥氣的小蘇  
本文詳細解析了Vuex中的四個核心概念及其區(qū)別,包括State用于存儲狀態(tài),Getters用于計算屬性并緩存,Mutations是唯一更改State的同步方法,Actions則用于提交Mutations且支持異步操作

Vuex的四個常用核心概念

在 Vuex 中,state, getters、mutations 和 actions 是四個個核心概念,而同學們時常會搞亂其中的某些概念和用法, 這里統(tǒng)一講解一下

State

首先,我們要明確 Vuex 的核心概念 state。

State 是 Vuex 中用于存儲應用狀態(tài)的對象。

這些狀態(tài)是響應式的,當它們改變時,視圖會自動更新。

Getters

這里同學就有疑問了, vuex 的 state 明明可以直接進行訪問,為什么要畫蛇添足的加一個 Getters 呢?

其實: Getters 是用于從 state 中派生出一些狀態(tài),例如對 state 中的數(shù)據(jù)進行過濾或計算新的值。

與直接返回 state 的值相比,getter 的返回值會根據(jù)它的依賴進行緩存。

只有在相關依賴發(fā)生改變時才會重新求值。(說人話就是減少計算成本, 提高性能)

用法:

在 store 中定義 getter:

const store = new Vuex.Store ({  
  state: {  
    todos: [  
      { id: 1, text: '...', done: true },  
      { id: 2, text: '...', done: false }  
    ]  
  },  
  getters: {  
    doneTodos: state => {  
      return state.todos.filter (todo => todo. done)  
    }  
  }  
})

在組件中使用 getter:

computed: {  
  doneTodos () {  
    return this.$store. getters. doneTodos  
  }  
}

Mutations

Mutations 是 Vuex 中用于更改 state 的唯一方法( 記住, 是唯一的喲)。

Vuex 中的 mutations 非常類似于事件:每個 mutation 都有一個字符串的事件類型 (type) 和一個回調函數(shù) (handler)。

這個回調函數(shù)就是我們實際進行狀態(tài)更改的地方,并且它會接受 state 作為第一個參數(shù)。

const store = new Vuex.Store ({  
  state: {  
    count: 0  
  },  
  mutations: {  
    increment (state) {  
      // 變更狀態(tài)  
      state.count++  
    }  
  }  
})
在組件中提交 mutation:

javascript
methods: {  
  increment () {  
    this.$store.commit ('increment')  
  }  
}

Actions

那么 actions 和 mutations 有什么區(qū)別呢?

Actions 類似于 mutations,不同在于:

  • Action 提交的是 mutation,而不是直接變更狀態(tài)。
  • Action 可以包含任意異步操作。
  • 當需要在 state 上執(zhí)行異步操作或者執(zhí)行一批 mutations 時,你可以使用 actions。

用法:

在 store 中定義 action:

const store = new Vuex.Store ({  
  state: {  
    count: 0  
  },  
  mutations: {  
    increment (state) {  
      state. count++  
    }  
  },  
  actions: {  
    incrementAsync ({ commit }) {  
      setTimeout (() => {  
        commit ('increment')  
      }, 1000)  
    }  
  }  
})

在組件中分發(fā) action:

methods: {  
  incrementAsync () {  
    this.$store.dispatch('incrementAsync')  
  }  
}

注意:

在 actions 中,你可以通過 context 對象來訪問 commit 方法(或其他 Vuex 屬性)。

為了方便,我們可以直接解構 commit 出來,就像上面的例子那樣。

總結

  • State:存儲應用的狀態(tài)。
  • Getters:基于 state 計算屬性,并可以緩存結果。
  • Mutations:直接更改 state 的唯一方式,且必須是同步函數(shù)。
  • Actions:類似于 mutations,用于提交 mutations,可以包含任意異步操作。

這四個概念共同構成了 Vuex 的核心功能,使得狀態(tài)管理在 Vue 應用中變得清晰、可預測和可維護。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Element-ui table中過濾條件變更表格內容的方法

    Element-ui table中過濾條件變更表格內容的方法

    下面小編就為大家分享一篇Element-ui table中過濾條件變更表格內容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue-router之路由鉤子函數(shù)應用小結

    vue-router之路由鉤子函數(shù)應用小結

    vue-router提供的導航鉤子主要用來攔截導航,讓它完成跳轉或取消,本文主要介紹了vue-router之路由鉤子函數(shù)應用小結,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • springboot?vue接口測試前端模塊樹和接口列表

    springboot?vue接口測試前端模塊樹和接口列表

    這篇文章主要為大家介紹了springboot?vue接口測試前端模塊樹和接口列表,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Vue+Vant實現(xiàn)下拉加載功能

    Vue+Vant實現(xiàn)下拉加載功能

    為了像微信一樣方便地加載更多歷史消息,這篇文章將為大家介紹我們如何使用vant組件來實現(xiàn)下拉加載功能,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • Vue項目中使用vuex詳解

    Vue項目中使用vuex詳解

    Vuex是一個專為Vue.js應用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化,下面這篇文章主要給大家介紹了關于vuex模塊獲取數(shù)據(jù)及方法的相關資料,需要的朋友可以參考下
    2023-03-03
  • 用vue寫一個仿簡書的輪播圖的示例代碼

    用vue寫一個仿簡書的輪播圖的示例代碼

    本篇文章主要介紹了用vue寫一個仿簡書的輪播圖的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 使用Bootstrap + Vue.js實現(xiàn)表格的動態(tài)展示、新增和刪除功能

    使用Bootstrap + Vue.js實現(xiàn)表格的動態(tài)展示、新增和刪除功能

    這篇文章主要介紹了使用Bootstrap + Vue.js實現(xiàn)表格的動態(tài)展示、新增和刪除功能,需要的朋友可以參考下
    2017-11-11
  • Vue2中無法檢測到數(shù)組變動的原因及解決

    Vue2中無法檢測到數(shù)組變動的原因及解決

    由于某些限制,vue2不能檢測到某些情況下數(shù)組的變動,本文就將具體講解這兩種限制的解決思路
    2021-06-06
  • vue中el-input綁定鍵盤按鍵(按鍵修飾符)

    vue中el-input綁定鍵盤按鍵(按鍵修飾符)

    這篇文章主要介紹了vue中el-input綁定鍵盤按鍵(按鍵修飾符),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 使用 JSON.stringify() 列化一個Error

    使用 JSON.stringify() 列化一個Error

    這篇文章主要介紹了使用 JSON.stringify() 列化一個Error,需要的朋友可以參考下
    2023-10-10

最新評論

九台市| 额济纳旗| 鹤山市| 邻水| 罗田县| 大田县| 泰和县| 福海县| 林州市| 铜山县| 铜山县| 揭东县| 木里| 如东县| 托克逊县| 漳平市| 汝州市| 丹巴县| 盐池县| 延庆县| 丹阳市| 永定县| 仪征市| 乌拉特中旗| 山西省| 任丘市| 从江县| 常山县| 民权县| 嘉善县| 石楼县| 察隅县| 深圳市| 金山区| 绥棱县| 奈曼旗| 黄浦区| 承德县| 湾仔区| 托克逊县| 宾川县|