电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue 同步異步存值取值實現(xiàn)案例

瀏覽:99日期:2022-12-16 08:15:14

1.vue中各個組件之間傳值

1.父子組件

父組件?>子組件,通過子組件的自定義屬性:props

子組件?>父組件,通過自定義事件:this.emit(′事件名′,參數(shù)1,參數(shù)2,...);

2.非父子組件或父子組件通過數(shù)據(jù)總數(shù)Bus,this.root.$emit(‘事件名’,參數(shù)1,參數(shù)2,…)

3.非父子組件或父子組件

更好的方式是在vue中使用vuex

方法1: 用組件之間通訊。這樣寫很麻煩,并且寫著寫著,估計自己都不知道這是啥了,很容易寫暈。

方法2: 我們定義全局變量。模塊a的數(shù)據(jù)賦值給全局變量x。然后模塊b獲取x。這樣我們就很容易獲取到數(shù)據(jù)

2. Vuex

Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。可以想象為一個“前端數(shù)據(jù)庫”(數(shù)據(jù)倉庫),

讓其在各個頁面上實現(xiàn)數(shù)據(jù)的共享包括狀態(tài),并且可操作

Vuex分成五個部分:

1.State:單一狀態(tài)樹

2.Getters:狀態(tài)獲取

3.Mutations:觸發(fā)同步事件

4.Actions:提交mutation,可以包含異步操作

5.Module:將vuex進行分模塊

3. vuex使用步驟

3.1 安裝

打開項目根目錄,shift+鼠標右鍵進入窗口,輸入以下命令

npm install vuex -S

3.2 在src目錄下面創(chuàng)建store模塊,分別維護state/actions/mutations/getters

Vue 同步異步存值取值實現(xiàn)案例

1.State:單一狀態(tài)樹

2.Getters:狀態(tài)獲取

3.Mutations:觸發(fā)同步事件

4.Actions:提交mutation,可以包含異步操作

5.Module:將vuex進行分模塊

5、在store里面的index.js文件,并在文件中導入各大模塊

index.js

import Vue from ’vue’import Vuex from ’vuex’import state from ’./state’import getters from ’./getters’import actions from ’./actions’import mutations from ’./mutations’

Vue.use(Vuex)

const store = new Vuex.Store({ state, // 共同維護的一個狀態(tài),state里面可以是很多個全局狀態(tài) getters, // 獲取數(shù)據(jù)并渲染 actions, // 數(shù)據(jù)的異步操作 mutations // 處理數(shù)據(jù)的唯一途徑,state的改變或賦值只能在這里})export default store ///導出

6. Vuex的核心概念

store:每一個Vuex應用的核心就是store(倉庫),store基本上就是一個容器,它包含著你的應用中大部分的狀態(tài) (state)。

state:我們用來存放我們需要用到的變量

gettters:用來獲取我們定義的變量

mutations:操作我們定義的變量,同步操作

actions:操作我們定義的變量,異步操作

state.js

export default { // 凡是工程里的變量都定義到這里來,同時可以分類管理 resturantName: ’飛鴿傳書’}

gettters.js

export default{ getResturantName: (state) => { return state.resturantName; }}

mutations.js

export default { setResturantName: (state, payload) => { state.resturantName = payload.resturantName; return this.$store.state.resturantName; }}

actions.js

export default{ setResturantNameAsyc: (context, payload) => { console.log(’xxx’) setTimeout(()=>{ console.log(’yyy’) context.commit(’setResturantName’, payload); //Action提交的是mutation },3000); console.log(’zzz’) }, doAjax:(context, payload) => { // 在vuex里面不能使用vue實例 let _this = payload._this; let url = this.axios.urls.SYSTEM_USER_DOLOGIN; // let url = ’http://localhost:8080/T216_SSH/vue/userAction_login.action’; console.log(url); _this.axios.get(url, {}).then((response) => { console.log(’doAjax.........’) console.log(response); }).catch(respone)=>{ console.log(response); } }}

將store在main.js中導入并掛載Vue 中實例

vuex綜合案例

需求:兩個組件A和B,vuex維護的公共數(shù)據(jù)是餐館名:resturantName,默認值:飛歌餐館,

那么現(xiàn)在A和B頁面顯示的就是飛歌餐館。如果A修改餐館名稱為A餐館,則B頁面顯示的將會是A餐館,反之B修改同理。

這就是vuex維護公共狀態(tài)或數(shù)據(jù)的魅力,在一個地方修改了數(shù)據(jù),在這個項目的其他頁面都會變成這個數(shù)據(jù)。

VuePage1.vue

<template> <div> <h3 style='margin: 60px;'>第一個Vuex頁面{{title}}</h3> <button @click='changTitle'>餐館易主</button> <button @click='changTitleAsync'>兩個月后餐館易主</button> <button @click='changTitleAsync'>測試Vuex中使用ajax</button> </div></template><script> export default { data() { return { }; }, methods: { changTitle() { this.$store.commit(’setResturantName’, { }); }, changTitleAsync() { this.$store.dispatch(’setResturantNameAsync’, { resturantName: ’小李飛刀羊肉館’ }); }, doAjax(){ this.$store.dispatch(’doAjax’,{ _this:this }) } }, computed: { title() { return this.$store.getters.getResturantName; } }, created(){ this.title=this.$store.state.resturantName; } }</script><style></style>

VuePage2.vue

<template> <div> <h3 style='margin: 60px;'>第二個Vuex頁面{{title}}</h3> this.$store.commit(type,payload); </div> </template><script> export default{ data(){ return{ }; }, created(){ this.title=this.$store.state.resturantName; } }</script><style></style>

Vue 同步異步存值取值實現(xiàn)案例

Action類似于 mutation,不同在于:

1.Action提交的是mutation,而不是直接變更狀態(tài)

2.Action可以包含任意異步操作

3.Action的回調(diào)函數(shù)接收一個 context 上下文參數(shù),注意,這個參數(shù)可不一般,它與 store 實例有著相同的方法和屬性

但是他們并不是同一個實例,context 包含:

1. state、2. rootState、3. getters、4. mutations、5. actions 五個屬性

所以在這里可以使用 context.commit 來提交一個 mutation,或者通過 context.state 和 context.getters 來獲取 state 和 getters。

注1:actions中方法的調(diào)用方式語法如下:

this.store.dispatch(type,payload);例如:this.store.dispatch(type,payload);例如:this.store.dispatch(‘setResturantNameByAsync’,{resturantName: ‘啃德雞2’});

注2:action中提交mutation

context.commit(‘setResturantName’,{resturantName: ‘啃德雞2’});

注3:VUEX 的 actions 中無法獲取到 this 對象

如果要在actions 或者 mutations 中使用this對象。可以在調(diào)用的時候把this對象傳過去

{resturantName: ‘啃德雞2’,_this:this}//this就是在調(diào)用時的vue實例

Vuex中actions的使用場景

場景1:部門管理中添加或刪除了新的部門,員工新增/編輯頁面的部門列表需要進行變化

場景2:vuex之使用actions和axios異步初始購物車數(shù)據(jù)

以上這篇Vue 同步異步存值取值實現(xiàn)案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Vue
相關文章:
主站蜘蛛池模板: 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 合肥注册公司|合肥代办营业执照、2024注册公司流程 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 威客电竞(vk·game)·电子竞技赛事官网 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 贵州成人高考网_贵州成考网 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 深圳彩钢板_彩钢瓦_岩棉板_夹芯板_防火复合彩钢板_长鑫 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 全自动变压器变比组别测试仪-手持式直流电阻测试仪-上海来扬电气 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 仿真植物|仿真树|仿真花|假树|植物墙 - 广州天昆仿真植物有限公司 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 |