Vue项目中使用vuex详解

 更新时间:2023年03月25日 09:39:45   作者:大熊李子  
Vuex是一个专为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,下面这篇文章主要给大家介绍了关于vuex模块获取数据及方法的相关资料,需要的朋友可以参考下

一、vuex状态共享树

以前我们进行数据的共享,使用的是自定义事件,自定义属性,eventBus,全局事件总线,pubsub等,以上的方式只能在小范围内进行数据共享,对于大范围以及频繁的数据共享来说,不太使用,尤其是在大型项目中的体验感不佳

1.什么是Vuex

Vuex是实现组件全局状态(数据)管理的-种机制,可以方便的实现组件之间数据的共享。

2.vuex的优点

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

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

3. 存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

3.什么时候使用vuex

一般情况下,只有组件之间共享的数据,才有必要存储到vuex中;对于组件中的私有数据,依旧存储在组件自身的data中即可。

二、Vuex的基本使用

①安装 vuex 依赖

npmi vuex--save

②导入 vuex 包

importVuexfrom'vuex'
Vuex.use(Vuex)

③创建 store 对象

const store=new Vuex.store({
//state中存放的就是全局共享的数据
state:{count:0}
})

④将 store 对象挂载到 vue 实例中

new vue({
el:'#app',
render:h=>h(app),
router,
//将创建的共享数据对象,挂载到Vue实例中
//所有的组件,就可以直接从store中获取全局的数据了
store
})

三、Vuex的核心概念

四个vuex节点

1.State

State提供唯一的公共数据源,所有共享的数据都要统-放到Store的State中进行存储。

//创建store数据源,提供唯一-公共数据
conststore=newVuex.store({
state:{count:0}
})

组件中使用共享数据的第一种方式

this.$store.state.数据变量名

组件中使用共享数据的第二种方式

从vuex中按需导入mapState函数
import{mapState}from'vuex'导入mapState函数

通过刚才导入的mapState函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性

computed:{
...mapState(['变量名'])
}

2.Mutation

Mutation 用于变更Store中的数据。vuex只能通过mutation变更Store数据,不可以直接操作Store中的数据。通过这种方式虽然操作起来稍微繁琐- -些,但是可以集中监控所有数据的变化。

exportdefaultnewVuex.Store({
state:{
count:0
},
mutations:{//定义mutation
add(state){
state.count++
}
}
})
//组件中使用
methods:{
add(){
//触发mutation
this.$store.commit('add')
}
}

可以在触发mutations时传递参数

export default new Vuex.Store({
state:{
count:0
},
mutations:{
addN(state,step){
//变更状态
state.count+=step
}
}
})
//组件中使用
methods:{
add(){
//触发mutation时携带参数
//commit的作用,就是调用某个mutation函數
this.$store.commit('addN',3)
}
}

mutations第二种使用方式

this. $store.commit() 是触发mutations的第一种方式,触发mutations的第二种方式

//1.从vuex中按需导入mapMutations函数
import{mapMutations}from'vuex'

通过刚才导入的mapMutations函数,将需要的mutations函数,映射为当前组件的methods方法

//2.将指定的mutations函数,映射为当前组件的methods函数
methods:{
...
mapMutations(['sub'])
}

3.Action

Action用于处理异步任务。如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发Mutation的方式间接变更数据。

export default new Vuex.Store({
state:{
count:0
},
mutations:{
add(state){
state.count++
},
actions:{
addAsync(context){
setTimeout(()=>{
context.commit('add')
},1000)
}
},
})
//组件中使用
methods:{
addAsync(){
这里的dispatch函数,专门用来触发action
this.$store.dispatch('addAsync')
}
}

4.Getter

Getter用于对Store中的数据进行加工处理形成新的数据。

1. Getter可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。

2. Store中数据发生变化,Getter 的数据也会跟着变化。

定义Getter

export default new Vuex.Store({
state:{
count:0
},
getters:{
showNum(state){
return'当前最新的数量是:'+state.count
}
}

调用 Getter

使用getters的第一种方式

this.$store.getters.名称

使用getters的第二种方式

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

到此这篇关于Vue项目中使用vuex详解的文章就介绍到这了,更多相关Vue vuex内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue项目中各文件的使用说明

    vue项目中各文件的使用说明

    这篇文章主要介绍了vue项目中各文件的使用说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • vue3.0安装Element ui及矢量图使用方式

    vue3.0安装Element ui及矢量图使用方式

    这篇文章主要介绍了vue3.0安装Element ui及矢量图使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Vue3中watch的用法与最佳实践指南

    Vue3中watch的用法与最佳实践指南

    这篇文章主要给大家介绍了关于Vue3中watch用法与最佳实践的相关资料,watch的作用可以监控一个值的变换,并调用因为变化需要执行的方法,可以通过watch动态改变关联的状态,需要的朋友可以参考下
    2021-07-07
  • Vue实现无缝轮播效果

    Vue实现无缝轮播效果

    这篇文章主要为大家详细介绍了Vue实现无缝轮播效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 实例分析编写vue组件方法

    实例分析编写vue组件方法

    在本篇文章中我们给大家总结了关于编写vue组件的方法知识点,有此需要的读者们跟着学习下。
    2019-02-02
  • vue3中el-table实现表格合计行的示例代码

    vue3中el-table实现表格合计行的示例代码

    这篇文章主要介绍了vue3中el-table实现表格合计行,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • vue生命周期与钩子函数简单示例

    vue生命周期与钩子函数简单示例

    这篇文章主要介绍了vue生命周期与钩子函数,结合简单实例形式分析了vue.js生命周期及钩子函数相关流程与实现技巧,需要的朋友可以参考下
    2019-03-03
  • webstorm+vue初始化项目的方法

    webstorm+vue初始化项目的方法

    今天小编就为大家分享一篇webstorm+vue初始化项目的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • vue.js-div滚动条隐藏但有滚动效果的实现方法

    vue.js-div滚动条隐藏但有滚动效果的实现方法

    下面小编就为大家分享一篇vue.js-div滚动条隐藏但有滚动效果的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue 动态路由component 传递变量报错问题解决

    vue 动态路由component 传递变量报错问题解决

    这篇文章主要为大家介绍了vue 动态路由component 传递变量报错问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论