Vue学习笔记(八)

本文详细介绍了Vuex的核心概念,包括State、Mutation、Action和Getter。State用于集中管理共享数据,Mutation负责安全地变更数据,Action处理异步任务并触发Mutation,而Getter则用于加工数据并提供响应式的新数据。通过这些概念,Vuex帮助开发者更有效地实现Vue组件间的数据共享和应用状态管理。

Vuex部分

(一)Vuex作用:存储组件共享的数据

1.集中管理共享数据,易于开发和后期维护

2.能够高效实现组件之间的数据共享,提高开发效率

3.存储的数据是响应式的,能够保持数据与页面的同步

(一)Vuex核心概念

1.State

访问:

(1)store.js中操作

import { createStore } from "vuex";

export default createStore({

//声明state: { }

    getters,

    modules,

});

(2)组件访问:

方法1:this.$store.state.属性名(template里面this省略)

方法2:组件中 import {mapState} from 'vuex' 将当前组件需要的全局数据映射为当前组件的computed计算属性:

computed: {

...mapState(["属性名"])//...是展开运算符

}

2.Mutation: 变更Store里面的数据

(1)好处:可以集中监控数据变化

(2)定义:

import { createStore } from "vuex";

export default createStore({

//声明state: { }

//声明mutations: {定义方法,参数是state,变更state的属性}

    modules,

});

(3)触发:

①this.$store.commit("方法名称")

②import {mapMutations} from 'vuex' ,将需要的mutation函数映射为methods方法

methods: {

...mapMutations(["属性名"])//...是展开运算符

//然后在具体的函数中this.属性名调用

}

(4)触发mutation时传递参数:定义时放在传参的第二参数,第一个一定是state;触发的时候this.$store.commit("方法名称", 参数)

不要再mutations函数中执行异步操作(定时器之类的)

3.Action:处理异步任务,但是要在action中触发 mutation来变更数据

(1)定义action

import { createStore } from "vuex";

export default createStore({

//声明state: { }

//声明mutations: {定义方法,参数是state,变更state的属性}

 //声明actions: {

//方法名建议是mutation方法+Async

方法名(context){

setTimeout( ()=>{context.commit(mutation方法名)},时间间隔)

}

}

});

(2)触发action

①在组件methods中使用this.$store.dispatch(action方法)

②import {mapActions} from 'vuex' ,将需要的mutation函数映射为methods方法

methods: {

...mapActions(["方法名"])//...是展开运算符

//然后在具体的函数中this.方法名调用

}

(3)携带参数(跟mutation一样,然后调用mutation方法时也要传进去

2.Getter:

对Store数据加工处理成新的数据,不修改store数据,类似计算属性,store数据变化getter也会变

(1)声明Getter

import { createStore } from "vuex";

export default createStore({

//声明state: { }

//声明mutations: {}

 //声明actions: {}

//声明getters{

方法名(state){

//处理语句

return 要返回的东西

}

}

});

(2)使用getters

①this.$store.getters.方法名

②import {mapGetters} from 'vuex' ,将需要的mutation函数映射为computed计算属性

computed: {

...mapGetters(["方法名"])//...是展开运算符

//然后在具体的函数中this.方法名调用

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值