首頁 web前端 js教程 談談我對vuex的理解

談談我對vuex的理解

Jun 26, 2017 pm 01:30 PM
vuex 完整 核心 概念

vuex是解決vue組件和組件間相互通信而存在的,vuex理解起來稍微複雜,但一旦看懂則即為好用:

安裝:

npm install --save vuex
登入後複製

引入

import Vuex
登入後複製
console.log(Vuex) //Vuex为一个对象里面包含Vuex ={
    Store:function Store(){},    
    mapActions:function(){},    // 对应Actions的结果集mapGetters:function(){},    //对应Getters的结果集mapMutations:function(){},  //对应Mutations的结果集mapState:function(){},      //对应State的结果集install:function install(){}, //暂时不做讲解 installed:true //暂时不做讲解}//如果我们只需要里面的State时我们可以这样写import { mapState } from 'vuex';
import { mapGetters, mapMutations } from 'vuex'; //如果需要引用多个时用这种方式处理
登入後複製

引入

參數的介紹

State         儲存初始化資料

Getters      對State 裡面的資料二次處理(對資料進行過濾類似filter的作用)例如State返回的作為一個對象,我們想要取一個鍵的值用這個方法

Mutations   對資料進行計算的方法全部寫在裡面(類似computed) 在頁面中觸發時使用this.$store.commit('mutationName') 觸發Mutations方法改變state的值

Actions   ut  處理Mations中已經寫好的方法其直接觸發方式是this.$store.dispatch(actionName)
我們先不急著了解更多先打印下Vuex

//store为实例化生成的import store from './store' new Vue({
  el: '#app',
  store,
  render: h => h(App)
})
登入後複製

反复看上面的內容是不是就豁然開朗了接下來我們進行依序舉例和用官方的語言描述

State
State負責儲存整個應用的狀態數據,一般需要在使用的時候在跟節點注入store對象,後期就可以使用this.$store.state直接獲取狀態

//./store文件const store = new Vuex.Store({
  state: {   //放置state的值
    count: 0,
    strLength:"abcd234"
  },
  getters: {   //放置getters方法
      strLength: state => state.aString.length
  },
  mutations: {   //放置mutations方法
       mutationName(state) {          //在这里改变state中的数据  state.count = 100;
       }
  },  // 异步的数据操作  actions: {      //放置actions方法
       actionName({ commit }) {          //dosomething commit('mutationName')
      },
      getSong ({commit}, id) {
          api.getMusicUrlResource(id).then(res => {
            let url = res.data.data[0].url;
        
          })
          .catch((error) => {  // 错误处理              console.log(error);
          });
      }
  }
});
export default store;
登入後複製
這個store可以理解為一個容器,包含著應用中的state等。實例化產生store的過程是:  

import {mapState} from 'vuex'export default {  //组件中
  computed: mapState({
    count: state => state.count
  })
}
登入後複製
後續在組件中使用的過程中,如果想要獲取對應的狀態你就可以直接使用this.$store.state獲取,當然,也可以利用vuex提供的mapState輔助函數將state對應到計算屬性中去,如

import {mapGetters} from 'vuex'export default {  
computed: mapGetters(['strLength'])
}
登入後複製

Getters

有些狀態需要做二次處理,就可以使用getters。透過this.$store.getters.valueName對派生出來的狀態進行存取。或直接使用輔助函數mapGetters將其映射到本地計算屬性中去。
在組件中使用方式

export default {
  methods: {
    handleClick() {      this.$store.commit('mutationName')
    }
  }
}
登入後複製

Mutations

Mutations的中文意思是“變化”,利用它可以更改狀態,本質就是用來處理數據的函數,其接收唯一參數值state。 store.commit(mutationName)是用來觸發一個mutation的方法。需要記住的是,定義的mutation必須是同步函數,否則devtool中的資料將可能出現問題,使狀態改變變得難以追蹤。
在元件中觸發:

import {mapMutations} from 'vuex'export default {
  methods: mapMutations(['mutationName'
  ])
}
登入後複製
或使用輔助函數mapMutations直接將觸發函數對應到methods上,這樣就能在元素事件綁定上直接使用了。如:

import {mapActions} from 'vuex'//我是一个组件export default {
  methods: mapActions(['actionName',
  ])
}
登入後複製

Actions

Actions也可以用來改變狀態,不過是透過觸發mutation實現的,重要的是可以包含非同步操作。其輔助函數是mapActions與mapMutations類似,也是綁定在元件的methods上的。如果選擇直接觸發的話,使用this.$store.dispatch(actionName)方法。
在組件中使用

//写在./store文件中import createLogger from 'vuex/dist/logger'const store = Vuex.Store({
  ...
  plugins: [createLogger()]
})
登入後複製

 Plugins
插件就是一個鉤子函數,在初始化store的時候引入即可。比較常用的是內建的logger插件,用於作為調試使用。

rrreee🎜🎜 🎜

以上是談談我對vuex的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
如何在 Windows 11、10 中啟用或停用核心隔離記憶體完整性 如何在 Windows 11、10 中啟用或停用核心隔離記憶體完整性 Apr 27, 2023 pm 10:43 PM

如今,大多數Windows用戶都使用虛擬機器。當他們系統上的核心隔離被禁用時,安全風險和攻擊是可以預料的。即使設定了核心隔離,如果使用者升級了系統,也會停用記憶體完整性。如果啟用核心隔離,系統將免受攻擊。對於經常使用虛擬計算機的人,強烈建議他們啟用它。如果您正在尋求有關如何在任何Windows11系統上啟用或停用核心隔離記憶體完整性的說明,此頁面可以提供協助。如何使用Windows安全性應用在Windows11中啟用或停用核心隔離記憶體完整性第1步:按Windows鍵並鍵入Windows安全

深入了解Gunicorn的基本原理與功能 深入了解Gunicorn的基本原理與功能 Jan 03, 2024 am 08:41 AM

Gunicorn的基本概念和作用Gunicorn是一個用於在PythonWeb應用程式中運行WSGI伺服器的工具。 WSGI(Web伺服器閘道介面)是Python語言定義的一種規範,用來定義Web伺服器與Web應用程式之間的通訊介面。 Gunicorn透過實作WSGI規範,使得PythonWeb應用程式可以被部署和運行在生產環境中。 Gunicorn的作用是作

元宇宙概念是什麼意思 什麼是元宇宙概念 元宇宙概念是什麼意思 什麼是元宇宙概念 Feb 22, 2024 pm 03:55 PM

元宇宙是利用技术与现实世界映射与交互的虚幻世界。解析1元宇宙【Metaverse】是充分利用技术方式进行链接与创造的,与现实世界映射与交互的虚幻世界,拥有最新型社会发展体制的数据生活空间。2元宇宙本质上是对现实世界的虚拟技术、数字化过程,需要对內容生产、经济系统、客户体验和实体世界內容等进行大量改造。3但元宇宙的发展趋势是循序渐进的,是在共享的基础设施、标准规定及协议的支撑下,由许多工具、平台不断结合、进化而最终成型。补充:元宇宙是什么构成的1元宇宙由Meta和Verse构成,Meta是超越,V

Oracle RAC 簡介及核心概念 Oracle RAC 簡介及核心概念 Mar 07, 2024 am 11:39 AM

OracleRAC(RealApplicationClusters)簡介及核心概念隨著企業資料量的不斷增長和對高可用性、高效能的需求日益突出,資料庫叢集技術變得越來越重要。 OracleRAC(RealApplicationClusters)就是為了解決這個問題而設計的。 OracleRAC是Oracle公司推出的一種高可用性、高效能的叢集資料庫解

在Vue應用程式中使用vuex時出現「Error: [vuex] unknown action type: xxx」怎麼解決? 在Vue應用程式中使用vuex時出現「Error: [vuex] unknown action type: xxx」怎麼解決? Jun 25, 2023 pm 12:09 PM

在Vue.js專案中,vuex是一個非常有用的狀態管理工具。它可以幫助我們在多個元件之間共享狀態,並提供了一種可靠的方式來管理狀態的變化。但使用vuex時,有時會遇到「Error:[vuex]unknownact​​iontype:xxx」的錯誤。這篇文章將介紹該錯誤的原因及解決方法。 1.錯誤原因在使用vuex時,我們需要定義一些actions和mu

掌握Spring MVC的關鍵概念:了解這些重要特性 掌握Spring MVC的關鍵概念:了解這些重要特性 Dec 29, 2023 am 09:14 AM

了解SpringMVC的關鍵特性:掌握這些重要的概念,需要具體程式碼範例SpringMVC是一種基於Java的Web應用開發框架,它透過模型-視圖-控制器(MVC)的架構模式來幫助開發人員建立靈活可擴展的Web應用程式。了解和掌握SpringMVC的關鍵特性將使我們能夠更有效地開發和管理我們的網路應用程式。本文將介紹一些SpringMVC的重要概念

蘋果M3 Ultra推出全新版本,新增32個CPU核心與80個GPU核心 蘋果M3 Ultra推出全新版本,新增32個CPU核心與80個GPU核心 Nov 13, 2023 pm 11:13 PM

這款晶片可能搭載高達80個GPU核心,進而成為M3系列中效能最強大的產品。 Max兩倍核心數量從M1與M2系列的發展模式來看,蘋果的「Ultra」版晶片基本上是「Max」版本的兩倍核心數量,這是因為蘋果實際上將兩顆Max晶片透過內部連接技術結合起來,形成了M1Ultra與M2Ultra。 80個GPU核心M3Ultra可能擁有「高達80個圖形處理核心」。這項預測是基於蘋果晶片的發展路徑:從基礎版到「Pro」版,再到圖形核心數量翻倍的「Max」版,以及CPU和GPU核心都翻倍的「Ultra」版。舉例來

在Vue應用中使用vuex時出現「Error: [vuex] do not mutate vuex store state outside mutation handlers.」怎麼解決? 在Vue應用中使用vuex時出現「Error: [vuex] do not mutate vuex store state outside mutation handlers.」怎麼解決? Jun 24, 2023 pm 07:04 PM

在Vue應用程式中,使用vuex是常見的狀態管理方式。然而,在使用vuex時,我們有時可能會遇到這樣的錯誤提示:「Error:[vuex]donotmutatevuexstorestateoutsidemutationhandlers.」這個錯誤提示是什麼意思呢?為什麼會出現這個錯誤提示?如何解決這個錯誤?本文將詳細介紹這個問題。錯誤提示的含

See all articles