趁著對象泡腳的功夫,我把vueX吃透了

文章目錄

    • vueX
      • 🌟Vuex的概述
        • 什么是vuex
        • Vuex管理數據的優點
      • 🌟Vuex的基本使用步驟
        • 1.安裝 npm i vuex --save
        • 2.在src文件目錄下新建store>index.js文件
        • 3.口文件里面引入store,然后再全局注入
        • 4.使用
      • 🌟Vuex中的核心特性
        • State
          • 在組件中訪問State的方式:
        • Mutation
          • 使用方式第一種
          • 使用mutations的第二種方式:
        • Action
          • 操作步驟第一種
          • 操作步驟第二種
        • Getter
          • 使用
      • 🌟寫在最后

vueX

🌟Vuex的概述

什么是vuex

Vuex是實現組件全局狀態(數據)管理的一種機制,可以方便的實現組件之間的數據共享

Vuex管理數據的優點

A.能夠在vuex中集中管理共享的數據,便于開發和后期進行維護

B.能夠高效的實現組件之間的數據共享,提高開發效率

C.存儲在vuex中的數據是響應式的,當數據發生改變時,頁面中的數據也會同步更新

🌟Vuex的基本使用步驟

1.安裝 npm i vuex --save

2.在src文件目錄下新建store>index.js文件

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store();export default store;

3.口文件里面引入store,然后再全局注入

import store from './store'//引入storenew Vue({el: '#app',router,store,//使用storetemplate: '<App/>',components: { App }
})

4.使用

在state中定義數據

Vue.use(Vuex)
const store = new Vuex.Store({state:{count:1}
})

Getter相當于vue中的computed計算屬性,getter 的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變才會被重新計算,Getters 可以用于監聽、state中的值的變化,返回計算后的結果

 getters:{getCount:state=>{return state.count+1}

給action注冊事件處理函數,當這個函數被觸發時候,將狀態提交到mutations中處理。actions里面自定義的函數接收一個context參數和要變化的形參

actions:{addFun(context,n){context.commit('add',n)}removeFun(context){context.commit("remove")}}

mutations是一個對象里。面的方法 都是同步事務,是更改state初始狀態的唯一合法方法,具體的用法就是給里面的方法傳入參數state或額外的參數

  mutations:{add(state,n){state.count = state.count+n},remove(){state.count=state.count-1}},

dispatch:含有異步操作,例如向后臺提交數據,寫法: this.$store.dispatch(‘action方法名’,值)

commit:同步操作,寫法:this.$store.commit(‘mutations方法名’,值)

export defult{data(){return{mag:'aaa'}},methods:{addCount(){this.$store.commit('add')},reoveCount:function(){this.$store.commit('remove')},addFun(){let n =2;this.$store.dispatch('addFun',n)},removeFun(){this.$store.dispatch('removeFun')}}
}

🌟Vuex中的核心特性

State

State提供唯一的公共數據源,所有共享的數據都要統一放到Store中的State中存儲

在組件中訪問State的方式:
1).this.$store.state.全局數據名稱  如:this.$store.state.count
2).先按需導入mapState函數: import { mapState } from 'vuex'
然后數據映射為計算屬性: computed:{ ...mapState(['全局數據名稱']) }

Mutation

Mutation用于修改變更$store中的數據

使用方式第一種

打開store.js文件,在mutations中添加代碼如下

mutations: {add(state,step){//第一個形參永遠都是state也就是$state對象//第二個形參是調用add時傳遞的參數state.count+=step;}}

然后在Addition.vue中給按鈕添加事件代碼如下:

<button @click="Add">+1</button>methods:{Add(){//使用commit函數調用mutations中的對應函數,//第一個參數就是我們要調用的mutations中的函數名//第二個參數就是傳遞給add函數的參數this.$store.commit('add',10)}
}
使用mutations的第二種方式:
import { mapMutations } from 'vuex'methods:{...mapMutations(['add'])
}
import { mapState,mapMutations } from 'vuex'export default {data() {return {}},methods:{//獲得mapMutations映射的sub函數...mapMutations(['sub']),//當點擊按鈕時觸發Sub函數Sub(){//調用sub函數完成對數據的操作this.sub(10);}},computed:{...mapState(['count'])}
}

Action

在mutations中不能編寫異步的代碼,會導致vue調試器的顯示出錯。
在vuex中我們可以使用Action來執行異步操作。

操作步驟第一種

打開store.js文件,修改Action,如下:

actions: {addAsync(context,step){setTimeout(()=>{context.commit('add',step);},2000)}
}

然后在Addition.vue中給按鈕添加事件代碼如下

<button @click="AddAsync">...+1</button>methods:{AddAsync(){this.$store.dispatch('addAsync',5)}
}
操作步驟第二種
import { mapActions } from 'vuex'methods:{...mapMutations(['subAsync'])
}
import { mapState,mapMutations,mapActions } from 'vuex'export default {data() {return {}},methods:{//獲得mapMutations映射的sub函數...mapMutations(['sub']),//當點擊按鈕時觸發Sub函數Sub(){//調用sub函數完成對數據的操作this.sub(10);},//獲得mapActions映射的addAsync函數...mapActions(['subAsync']),asyncSub(){this.subAsync(5);}},computed:{...mapState(['count'])}
}

Getter

Getter用于對Store中的數據進行加工處理形成新的數據
它只會包裝Store中保存的數據,并不會修改Store中保存的數據,當Store中的數據發生變化時,Getter生成的內容也會隨之變化

使用

打開store.js文件,添加getters,然后打開Addition.vue中,添加插值表達式使用getters

export default new Vuex.Store({.......getters:{//添加了一個showNum的屬性showNum : state =>{return '最新的count值為:'+state.count;}}
})

或者也可以在Addition.vue中,導入mapGetters,并將之映射為計算屬性

import { mapGetters } from 'vuex'
computed:{...mapGetters(['showNum'])
}

🌟寫在最后

下方是小編開設的公眾號,每天為大家推送前端硬核知識!期待您的加入哦!
在這里插入圖片描述

?原創不易,大佬們給個支持!!!\textcolor{blue}{原創不易,大佬們給個支持!!!}

👍 點贊,你的認可是我創作的動力!\textcolor{green}{點贊,你的認可是我創作的動力!}

?? 收藏,你的青睞是我努力的方向!\textcolor{green}{收藏,你的青睞是我努力的方向!}

?? 評論,你的意見是我進步的財富!\textcolor{green}{評論,你的意見是我進步的財富!}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248550.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【題解】FBI序列

題目描述 兩伙外星人策劃在未來的XXXX年侵略地球&#xff0c;侵略前自然要交換信息咯&#xff0c;現在&#xff0c;作為全球保衛隊隊長&#xff0c;你截獲了外星人用來交換信息的一段僅由“F”&#xff0c;“B”&#xff0c;“I”&#xff0c;“O”組成的序列。為了保衛地球和平…

vue基礎(上篇)

?有粉絲在私信中聯系博主&#xff0c;希望博主能夠系統的出一篇關于vue的基礎篇\textcolor{blue}{ 有粉絲在私信中聯系博主&#xff0c;希望博主能夠系統的出一篇關于 vue的基礎篇}有粉絲在私信中聯系博主&#xff0c;希望博主能夠系統的出一篇關于vue的基礎篇 ? 今天他來了…

depends用于測試程序運行所缺少的文件,可以幫我們很快找到問題

DEPENDS工具和DUMPBIN工具使用閱讀目錄(Content) 1.Depends2.DUMPBIN2.1 開啟CMD2.2 移動目錄到C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin2.3 運行命令:VCVARS32.BAT2.4 下面就可以調用dumpbin.exe命令了在系統部署運行時我們經常發現某個程序在開發機器中可以…

友聯

歡迎來到小站友鏈區&#xff0c;歡迎━(&#xff40;?)ノ亻!。 ljc20020730學長巨佬_WA自動機珂朵莉最可愛了BLUESKY007雷姆最可愛啦揚子曰他的代碼是神奇的lukelin機房最強如果你想要成為chhokmah小站的朋友的話&#xff0c;請你先把小站加入為友鏈站喲(&#xff3e;&#xf…

vue基礎(中篇)

?有粉絲在私信中聯系博主&#xff0c;希望博主能夠系統的出一篇關于vue的基礎篇\textcolor{blue}{ 有粉絲在私信中聯系博主&#xff0c;希望博主能夠系統的出一篇關于 vue的基礎篇}有粉絲在私信中聯系博主&#xff0c;希望博主能夠系統的出一篇關于vue的基礎篇 ? 今天他來了…

DR圖像的畸變校正

DR圖像容易產生S形、枕形和局部失真的情況&#xff0c;這給醫生對圖像的判斷帶來干擾。而且在醫學圖像的三維重建中&#xff0c;未經校正的圖像進行重建&#xff0c;還會帶來一定的重影等干擾。因此&#xff0c;畸變校正是DR圖像進行后續處理&#xff0c;不得不對待的一個問題。…

【CF global1 D / CF1110D】 Jongmah

題意 你有n個數字&#xff0c;范圍[1, m]&#xff0c;你可以選擇其中的三個數字構成一個三元組&#xff0c;但是這三個數字必須是連續的或者相同的&#xff0c;每個數字只能用一次&#xff0c;問這n個數字最多構成多少個三元組? 分析 這里想談一下DP的一個套路&#xff0c;捆綁…

vue基礎(下篇)

介紹 對vue組件的介紹網上有很多大家可以自行查詢 組件 (Component) 是 Vue.js 最強大的功能之一 組件可以擴展 HTML 元素&#xff0c;封裝可重用的代 組件注冊 全局注冊 Vue.component(‘組件名稱’, { }) 第1個參數是標簽名稱&#xff0c;第2個參數是一個選項對象 全局組…

MS17-010漏洞復現

攻擊機&#xff1a;192.168.148.132 kali linux2018.2 x64 靶機&#xff1a;192.168.1.129 win7 x64 首先用msfconsole的smb模塊掃描&#xff0c;看看是否有漏洞 use auxiliary/scanner/smb/smb_ms17_010 set rhosts 192.168.1.129 &#xff08;目標主機&#xff09; Ho…

watch 和 computed

<template><div class"hello"><h1>{{ msg }}</h1><h2>Essential Links</h2><!-- watch/computed比較 --><div><input v-model"firstName" type"text"><input v-model"lastName&q…

[BZOJ]3173: [Tjoi2013]最長上升子序列

題解: 考慮按照元素升序加入 所以對位置在其后的元素LIS無影響 然后從前面位置的最大值轉移過來就行 ,,,,平衡樹無腦模擬 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <s…

轉:HTTP協議簡介與在python中的使用詳解

1. 使用谷歌/火狐瀏覽器分析 在Web應用中&#xff0c;服務器把網頁傳給瀏覽器&#xff0c;實際上就是把網頁的HTML代碼發送給瀏覽器&#xff0c;讓瀏覽器顯示出來。而瀏覽器和服務器之間的傳輸協議是HTTP&#xff0c;所以&#xff1a; HTML是一種用來定義網頁的文本&#xff0c…

深受企業青睞的華為云

作為中國經濟活力與韌性的重要保障&#xff0c;無數中小企業也在為奪得各自領域的冠軍你追我趕。而席卷全球的數字化轉型浪潮&#xff0c;則將這場冠軍爭奪賽推向了關鍵節點。企業數字化的第一步就是業務云端化&#xff0c;對企業來說云計算是不可或缺的數字底座。上云&#xf…

一個程序員的水平能差到什么程度?

老板覺得公司里都是男的&#xff0c;缺少一點陰柔之氣&#xff0c;想平衡一下&#xff0c;正巧當時互金公司倒了一大批&#xff0c;大批簡歷投到公司&#xff0c;老板以為自己也是技術出身&#xff0c;就招了一個三年工作經驗的女程序員&#xff0c;互金出來的&#xff0c;要價…

vue路由詳解版一目了然

概念 路由的本質就是一種對應關系&#xff0c;比如說我們在url地址中輸入我們要訪問的url地址之后&#xff0c;瀏覽器要去請求這個url地址對應的資源。 那么url地址和真實的資源之間就有一種對應的關系&#xff0c;就是路由。 路由分為前端路由和后端路由 1).后端路由是由服務…

go語言環境搭建

1、windows環境搭建   1、安裝go   2、安裝goland開發工具包 2、test.go /* 可執行文件&#xff0c;包名必須是main */ package main /* fmt 字符串格式化的包 */ import "fmt"/*main入口函數*/ func main() { fmt.Printf("Hello, world" )} View Code…

進階函數

一、函數對象 函數是第一類對象&#xff1a;函數名指向的值可以被當做參數傳遞 1.函數名可以被傳遞 def func():print(func)f func # 函數名可以當做變量名 print(f) # f指向的也是函數func指向函數體代碼的內存地址 2.函數名可以被當做參數傳遞給其他參數 def func():print…

vue腳手架基礎API全面講解【內附多個案例】

vscode-插件補充 vue文件代碼高亮插件-vscode中安裝 代碼提示插件-vscode中安裝 知識點自測 想學會今天的內容, 先測測這幾個會不會 表達式, 變量是什么 new的作用和含義 實例化對象 什么是對象上的, 屬性和方法 對象的賦值和取值 this的指向 npm/yarn是什么, package.json干…

mysql 和 sqlserver sql差異比較

mysql:select * from table_name limit 100,200;--取出從100到200的數據 獲取時間&#xff1a;mysql:now() mysql tinyint&#xff08;0,1&#xff09; → bit float &#xff08;decimal(19,4)&#xff09;→ moneytext → ntextvarchar →nvarchar 轉載于:https://www.cnblo…

Vue 過濾器、計算屬性、偵聽器 圖解版 一目了然

文章目錄本篇學習目標1. vue基礎1.0_vue基礎 v-for更新監測1.1_vue基礎_v-for就地更新1.2_vue基礎_虛擬dom1.3_vue基礎_diff算法情況1: 根元素變了, 刪除重建情況2: 根元素沒變, 屬性改變, 元素復用, 更新屬性1.4_vue基礎_diff算法-key情況3: 根元素沒變, 子元素沒變, 元素內容…