Vuex简单入门

直播间人气协议算法:从批量操作到数据接口的自动化实现 本文深入解析直播间人气协议算法的实现原理与技术细节,涵盖批量账号管理、IP代理方案、用户行为模拟算法及平台数据接口调用策略。通过逆向工程分析通信协议,结合算法设计实现自动化流量提升,同时探讨风控规避与系统性能优化方案,为开发者提供合规的技术实践参考。 阅读详情

Vuex

  1. Vuex概念
  2. Vuex基本使用
  3. state状态的获取 store.state
  4. state状态的修改 store.commit
  5. actions
  6. getters
  7. modules
  8. mapGetters、mapActions 和 mapState使用

参考链接:

一、Vuex概念

Vuex 应用的核心就是 store(仓库), store 基本上就是一个容器,它包含着你的应用中大部分的 状态(state)。

这 Vuex 官网的说法。

个人理解:

Vue 的 vuex 是全局转态管理; 在state中定义数据、在mutation修改数据、然后衍生出了各种便捷操作函数让你可以在当前项目任何一个组件里获取数据、修改数据,并且你的修改可以得到全局的响应式变更。


二、Vuex基本使用

安装 npm install --save vuex

安装完成Vuex后,在 main.js 中加入以下代码

 
import vuex form 'vuex'

Vue.use(vuex);

const state = {
	show:true
}

var store = new vuex.Store({ 
    state
})

new Vue({
  el: '#app',
  router,
  store, 
  template: '<App/>',
  components: { App }
})

const state定义的state对象就是store定义状态的地方,我们可以把需要状态定义在里面。然后在store实例中引入。

在Vue实例中,则引入store;

Vue.use(vuex),大家也应该看到这段代码,它是 vuex 通过 store 选项,提供了一种机制将状态从根组件 “注入” 到每一个子组件中,这样所有子组件中都能够直接使用store对象了。


三、state状态的获取 store.state

上面的栗子我们已经搭建好了基础的 Vuex store 构建。

那么子组件我们子组件就可以通过

this.$store.state.show   

获取 state 中的状态了,例如

<p v-show="this.$store.state.show"><p>

我们还可以在 state 中定义更多的数据

const state = {
	show:true,
	age:18
	....等等
}

为了方便管理,我们在src目录下新建一个store的文件夹且新建index.js的文件。

index.js

import Vue from 'vue'
import vuex form 'vuex'

Vue.use(vuex);

const state = {
	show:true,
	age:18,
	changableNum:0
}

export default new vuex.Store({
    state 
})

main.js

//vuex
import store from './store'

new Vue({
  el: '#app',
  router,
  store,//使用store
  template: '<App/>',
  components: { App }
})

这样就把store分离出去了。不影响状态的获取。


四、state状态的修改 store.commit

store对象使用和全局对象使用是不是很像?

Vuex 和 单纯的全局对象有一下两点不同

(1) Vuex 的状态存储是响应式的。

当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新(触发更新相关联的 DOM)。

(2) 你不能直接改变 store 中的状态。

改变 store 中的状态的唯一途径就是显式地 提交(commit)mutation。这样使得我们可以方便的跟踪没一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

那么要如何显示的提交 (commit)mutation 呢?

在store中,配置mutations对象

const mutations = {
    show(state) { 
    	//自定义改变state初始值的方法,这里面的参数除了state之外还可以再传额外的参数(变量或对象);
        state.show = true;
    },
    hide(state) {  //同上
        state.show = false;
    },
    newNum(state,sum){ 
    	//同上,这里面的参数除了state之外还传了需要增加的值sum
       state.changableNum += sum;
    }
};

export default new vuex.Store({
    state, 
    mutations
})

这个时候你完全可以通过使用

this.$store.commit('show')
this.$store.commit('hide')
this.$store.commit('newNum',6)

在子组件里面改变state中的show 和 newNum的值了。


五、actions

vuex官方API还提供了一个actions,这个actions也是个对象变量

  1. 官方推荐, 将异步操作放在 action 中。
  2. 能执行多个mutations方法。

这里面的方法是用来异步触发mutations里面的方法。

actions里面自定义的函数接收一个context参数和要变化的形参,context与store实例具有相同的方法和属性,

所以它可以执行context.commit(’ '),然后也不要忘了把它也扔进Vuex.Store里面:

const actions = {
   // 增加ac_ 方便区分(名字随便取,子组件调用即可)
   async ac_newNum(context,sum){ 
		 ///  在这里我们可以做耗时操作、网络请求 
		  
   	 ///  然后mutations中的方法 newNum 修改state中状态的值
    	 context.commit(newNum, sum);
    }
};

export default new vuex.Store({
    state, 
    mutations,
    actions
})

执行则可以直接调用

this.$store.dispatch('ac_newNum',6)

这样就在修改state中的值时,添加一些耗时操作后,通过 commit 到 mutations中 再在修改state中的值。


六、getters

还是前面的例子,我们已经知道获取state中的值(this.$store.state.xx),同步事务修改state中的值(this.$.store.commit('函数名','形参')),以及异步事务后修改state中的值(this.$store.dispatch('ac_函数',6)`)。

还有一个值得一个对象属性:getters

getters 和 vue 中的 computed 类似 , 都是用来计算 state 然后生成新的数据 ( 状态 ) 的。

computed(){
    not_show(){
        return !this.$store.state.show;
    }
}

那么 , 如果很多很多个组件中都需要用到这个与 show 刚好相反的状态 , 那么我们需要写很多很多个 not_show , 使用 getters 就可以解决这种问题 :

const getters = {
 	not_show(state){//这里的state对应着上面这个state
		 return !state.show;
   },
   getChangableNum(state){
   	return state.changableNum + 100;	}
};

export default new vuex.Store({
    state, 
    mutations,
    actions,
    getters
})

那么我们就可以通过

this.$store.getters.getChangableNum
this.$store.getters.not_show

**注意 : **$store.getters.not_show 的值是不能直接修改的 , 需要对应的 state 发生变化才能修改。

总而言之,getters 是用来生成与state相关联的属性对象,

到现在我们已经基本了解了 Vuex store的 4个基本对象属性

  • state
  • getters
  • mutations
  • actions

七、modules 模块化

在单个这个modules

index.js

const state = {
	show:true,
	age:18,
	changableNum:0
}

const mutations = {
    show(state) { 
    	//自定义改变state初始值的方法,这里面的参数除了state之外还可以再传额外的参数(变量或对象);
        state.show = true;
    },
    hide(state) {  //同上
        state.show = false;
    },
    newNum(state,sum){ 
    	//同上,这里面的参数除了state之外还传了需要增加的值sum
       state.changableNum += sum;
    }
};

const actions = {
   // 增加ac_ 方便区分(名字随便取,子组件调用即可)
   async ac_newNum(context,sum){ 
		 ///  在这里我们可以做耗时操作、网络请求 
		  
   	 ///  然后mutations中的方法 newNum 修改state中状态的值
    	 context.commit(newNum, sum);
    }
};

const getters = {
 	not_show(state){//这里的state对应着上面这个state
		 return !state.show;
   },
   getChangableNum(state){
   	return state.changableNum + 100;	}
};

export default new vuex.Store({
    state, 
    mutations,
    actions,
    getters
})

main.js

//vuex
import store from './store'

new Vue({
  el: '#app',
  router,
  store,//使用store
  template: '<App/>',
  components: { App }
})

多个modules时

index.js 变化如下

import Vue from 'vue'
import vuex form 'vuex'

Vue.use(vuex);

import a_store from '../components/a_store.js';//引入某个store对象
import b_store from '../components/b_store.js';//引入某个store对象

export default new vuex.Store({
    modules: {
        a_store: a_store,
        b_store: b_store
    }
})

在 a_store.js 和 b_store.js中

export default {
	 state, 
    mutations,
    actions,
    getters
}

通过引入这个两JS, 我们就可以单独写组件的状态了。


八、mapGetters、mapMutation、mapActions 和 mapState 使用

我们回顾一下,当我们查询、修改状态的时候都是这么样去操作的?

  1. this.$store.state.属性名
  2. this.$store.commit(‘mutation对象中方法名’,‘形参’)
  3. this.$store.dispath(‘actions对象中方法名’,‘形参’)
  4. this.$store.getters(‘getters对象中方法名’,‘形参’)

这种写法非常繁琐,很不方便
我们没使用 vuex的时候, 获取一个状态只需要 this.show,执行一个方法只需要 this.switch_dialog 就行了 , 使用 vuex 使写法变复杂了 ?

使用 mapState、mapGetters、mapActions、mapMutation 就不会这么复杂了。

以 mapState 为例:

我们都知道获取 mapState 要么计算属性中获取,要么直接赋值

computed:{
     ...mapState([
      'show',
      'age'
    ]),
  }

这样就和data()函数里面的参数使用就没什么区别了。

mapGetters 一般也写在 computed 中 , mapActions、mapMutation 一般写在 methods中。

通过mapState、mapGetters赋值给计算属性,mapActions、mapMutation 一般在 methods 触发调用。

当然这是针对单一modules写法。但是如果是多modules写法来说,这些函数也会有相应的变化:

还是用 mapState 举例

mapState('a_store',[])
mapState('b_store',[])

基本来这里,对于基础的Vuex的用法,应该了解差不多了,后期如果有时间,精力可以再进深一步的研究。
特别是mapState、mapMutation这些函数,当第一次看到这些函数的时候可能会很蒙,当了解原理后,其实也就那么回事,慢慢运用到工作中就越发会觉得的便宜。

MATLAB基础应用精讲-【数模应用】PPO算法(附python代码实现)(二) 表示为状态转移概率和动作选择概率的乘积,因为状态和动作决定轨迹。 阅读详情

相关推荐

瑞芯微RK3568开发板实战:Android11系统parameter.txt文件配置全解析(附常见问题排查)

本文深入解析了瑞芯微RK3568开发板在Android 11系统下parameter.txt文件的配置要点与实战技巧。作为BootLoader启动阶段的核心蓝图,该文件决定了硬件初始化、分区布局及电源管理。文章详细拆解了身份标识、GPIO控制(PWR_HLD)、命令行参数及分区表等关键字段的配置逻辑,并针对RK3568平台与Android 11特性提供了专项适配策略,最后附带了启动失败、分区异常等常见问题的深度排查方法。

php55的博客 895

vue中的全局变量 this.$store.state 的取值与赋值

一、定义 全局变量 注:如果不在store目录下的 index.js 定义 则 在其它 ***.vue 页面 代码中赋值,其它页面的这个全局变量,是不会变化的。

coldriversnow的专栏 2万+

在LinuxMint 22.1(Ubuntu24.04)上安装使用同花顺远航版

Linux用户成功在LinuxMint22.1系统上通过Wine9.0运行同花顺远航版,解决了长期困扰的股票行情软件问题。此前Linux原生版同花顺功能简陋且停止更新,Wine版通达信存在显示问题。作者作为自由软件支持者,通过调整Wine配置文件解决了高分屏显示异常问题,实现了远航版的正常使用。期待同花顺能重启Linux原生版开发,支持更多处理器架构,完善国产软件生态。该方案为Linux股票软件用户提供了实用参考。

5137

Vuex 基础

文章目录 目录 文章目录 前言 一、Vuex是什么? 二、初始化 三、Vuex组成 (一) state 1.定义 2. 原始调用 3.辅助函数 - mapState (二)mutations 1.定义 2.原始调用 3.辅助函数 - mapMutations (三)actions 1.定义 2.原始调用 3.辅助函数 -mapActions (四)getters 1.定义 2.原始调用 ...

weixin_53500514的博客 4388

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1052

IAR9.20.4安装与注册全攻略:附资源及典型问题解决方案

本文提供IAR9.20.4的详细安装与注册指南,涵盖环境准备、安装步骤、权限设置及注册机使用技巧。针对典型问题如评估版残留、权限不足和杀毒软件拦截等,给出了具体解决方案,帮助用户顺利完成IAR开发环境的搭建与激活。

a2b3c4d5e的博客 296

Vuex的基础使用

Vuex的基础使用

weixin_62407339的博客 716

B.3【智能标注】:基于Labelstudio的UIE半监督深度学习的智能标注方案(云端版),提效。

Label Studio 所提供的 Machine Learning Backend 提供了一个比较灵活的辅助人工标注的框架,我们通过它确实可以加快 nlp 数据的标注Label Studio 的 enterprise 版本提供了 Active Learning 的流程,不过从其描述看这个流程并不完美,尤其是 fit 部分,由于 Label Studio 低估了「Train」所花费的时间,所以每次标注都自动训练的流程可能并不会那么顺滑(会在链接时候等待一段时间)

丨汀、的博客 1840

vue中store.state、$store.state和this.$store.state的适用场景

通常情况下,在组件内部,推荐使用 `this.$store.state`,而在非组件的上下文中(如 Vuex 的模块定义、actions、mutations 或 getters)使用 `store.state` 更为合适。

大剑师兰特的GIS世界 2521

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 395

数字电路逻辑与设计实验三 译码器和数据选择器

1. 译码器功能测试 将 74LS139 按图 3.1 接线,按表 3.2 输入电平分别置位,填输出状态表。 2. 译码器转换 将双 2-4 线译码器转换为 3-8 线译码器。 (1)画出转换电路图。 (2)在实验箱上接线并验证设计是否正确。 (3)设计并填表写该 3-8 线译码器功能表,画出输入、输出波形。 3. 数据选择器的测试及应用 (1) 将双 4 选 1 数据选择器 74LS153 参照图 3.2 接线,测试其功能并填写功能表 3.3。 (2)将实验箱脉冲信号源中固定连续脉冲 4 个不

欢迎交流学习心得 3085

vue,引入this.$store.state.user.info,获取用户信息

将this.$store.state.user.info赋值给headForm表单,并渲染到div里面。第一步:在store--index里面引入Vue,Vuex,最后。第二步:在user.js里面添加定义的state.info。用export default 封装代码,让外部可以引用。报错:this.$store.state拿不到值。就可以实现动态拿到姓名,部门,当前日期等信息。第四步:检查vue和vuex的版本。使用vuex管理状态遇到的问题。具体的index页面上。

m0_51326872的博客 4931

手把手教你学pcie--(PCIe) 写请求的流程

通过上述流程,我们可以看到PCIe写请求的完整过程,包括请求的构建、发送、接收、处理和响应。这种请求-响应模型确保了数据传输的可靠性和有序性。

MHD0815的博客 158

vuex简单入门

title: “vuex简单入门”

qq_31435455的博客 665

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

vuex最简单、最详细的入门文档

vuex最简单、最详细的入门文档

tiantiandashi的博客 259

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Vuex的简单入门(三)

- Vuex的简单入门(二)

yy168888的博客 110

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Vuex 快速入门 简单易懂

Vuex 快速入门 简单易懂

小二丶的博客 1064

Vuex 简单入门

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。需要完整面试题的朋友可以点击蓝色字体获取面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。需要完整面试题的朋友可以点击蓝色字体获取[外链图片转存中…(img-XBdtv6wz-1712534961192)][外链图片转存中…(img-zRDqA8Ec-1712534961192)]

2401_84091663的博客 1140

Vuex的简单入门

在Vue项目中安装Vuex npm install vuex --save 在src目录下新建个store文件夹,里面新建index.js 在index.js文件夹中创建Vuex实例 import Vue from 'vue' import Vuex from 'vuex' //使用Vuex Vue.use(Vuex); //创建Vuex实例 const store=new Vuex.Sto...

明知山 468

Vuex简单入门实例

  对很多想入门Vue的新人来说,经常看到那个大神开源的dome,什么全家桶的,Vuex看上去是个高大上的东西。官方文档解释的很专业化,简单说就是不通俗。对我们这些小白来说就是很难一下子理解。   这篇是作者学习小记,如有什么错误的地方,还请不吝赐教!   Vuex是状态管理模式,这个怎么理解呢?   首先,Vuex是为了处理复杂数据逻辑而开发出来的,目的当然是为了数据,而这数据是...

aimi9377的博客 229

vuex 简单入门

环境准备 1.已经安装vue 2.已经创建vue项目 vuex简介及作用 参照官网专业解释,这里不作介绍 https://vuex.vuejs.org/zh/ 安装vuex 1.使用命令安装vuex npm install vuex --save 2.安装完成vuex之后,我们在src目录下创建一个store目录,并在store目录中创建一个store.js文件(文件名自拟) 3.现在我们可以...

Mazepk的博客 218
上一篇: NSTimer循环引用分析,解决
下一篇: Taro旧项目埋坑日记
Code_浅蓝
博客等级 码龄11年 28粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值