千家信息网

VueX怎么安装使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"VueX怎么安装使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"VueX怎么安装使用"吧!1、安装vuex依赖包npm install
千家信息网最后更新 2026年11月01日VueX怎么安装使用

本篇内容主要讲解"VueX怎么安装使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"VueX怎么安装使用"吧!

1、安装vuex依赖包

npm install vuex --save

2、导入vuex包

import Vuex from 'vuex'Vue.use(Vuex)

3、创建 store 对象

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

4、将 store 对象挂载到vue实例中

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

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

核心模块:State、Mutations、Actions、Module、Getters

在components目录下新建Addition.vue文件:

Subtraction.vue文件:

打开 App.vue 文件,引入俩个组件:

(1)、State:

State 提供唯一的公告数据源,所有共享的数据都要统一放到 Store 的 State 中进行存储。我们需要保存的数据就保存在这里,可以在页面通过 this.$store.state来获取我们定义的数据。

// 创建store数据源,提供唯一公共数据const store = new Vuex.Store({   state: {      count: 0   }})

组件访问 Store 中数据的第一种方式:

this.$store.state.全局数据名称

组件访问 Store 中数据的第二种方式:

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

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

// 2.将全局数据,映射为当前组件的计算属性computed: {    ...mapState(['count'])}

打开store/index.js文件,定义 count:

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({  state: {    count: 0  },  mutations: {  },  actions: {  },  modules: {  }})

回到Addition.vue文件中,用第一种方式:

回到 Subtraction.vue文件中,用第二种方式:

此时效果图:

(2)、Mutations:

Mutations 用于变更 Store 中的数据。只有 mutation里的函数才有权利去修改state中的数据。mutation非常类似于事件:每个 mutation 都有一个字符串的事件类型 (type)和 一个回调函数 (handler)。但是,mutation只允许同步函数,不能写异步的代码。

  • ①只能通过 mutation 变更 Store 数据,不可以直接操作 Store 中的数据。

  • ②通过这种方式虽然操作起来稍微繁琐一些,但是可以集中监控所有数据的变化。

定义:

// 定义 Mutationconst store = new Vuex.Store({  state: {    count: 0  },  mutations: {    add (state) {      // 变更状态      state.count++    }  }})

第一种触发方式:

// 触发 mutationmethods: {    handleAdd () {      // 触发 mutations 的第一种方式      this.$store.commit('add')    }}

打开store/index.js文件,定义mutations :

mutations: {    add (state) {      state.count++    }}

回到 Addition.vue文件中触发:

此时点击+1按钮,就可以看到数值变为1。

还可以在触发 mutations 时传递参数:

// 定义 Mutationconst store = new Vuex.Store({  state: {    count: 0  },  mutations: {    addN (state, step) {      // 变更状态      state.count += step    }  }})

第一种触发方式:

// 触发 mutationmethods: {    handleAdd () {      this.$store.commit('addN', 3)    }}

打开store/index.js文件,增加一个addN:

mutations: {    add (state) {      state.count++    },    addN (state, step) {      state.count += step    }}

回到 Addition.vue文件中,增加一个+N的按钮并增加点击事件:

此时点击+N按钮就会每次增加2。

触发 mutations 的第二种方式:

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

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

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

打开store/index.js文件,在mutations增加一个sub:

mutations: {    add (state) {      state.count++    },    addN (state, step) {      state.count += step    },    sub (state) {      state.count--    }},

回到 Subtraction.vue文件中,给-1按钮增加点击事件:

这时刷新页面,点击-1按钮就会每次-1了。

打开store/index.js文件,增加一个subN:

mutations: {    add (state) {      state.count++    },    addN (state, step) {      state.count += step    },    sub (state) {      state.count--    },    subN (state, step) {      state.count -= step    }},

回到Subtraction.vue文件中,在增加一个-N的按钮,并添加点击事件:

这时点击-N按钮,每次就-2了。

下面有个需求,就是在点击+1按钮后延迟1秒在显示变化后的数值。

注意:不要在mutations函数中,执行异步操作。所以就需要用到了Action用于处理异步任务。

(3)、Actions:

Action 用于处理异步任务。

如果通过异步操作变更数据,必须通过 Action,但是在 Action 中还是要通过触发 Mutation 的方式间接变更数据。

定义:

// 定义 Actionconst store = new Vuex.Store({  // ...省略其他代码  mutations: {    add (state) {      state.count++    }  },  actions: {    addAsync (context) {      setTimeout(() => {        context.commit('add')      }, 1000)    }  }})

第一种方式触发:

// 触发 Actionmethods: {  handleAdd () {      // 触发 actions 的第一种方式      this.$store.dispatch('addAsync')  }}

打开store/index.js文件,增加一个 addAsync:

actions: {    addAsync (context) {      setTimeout(() => {        // 在 actions 中,不能直接修改 state 中的数据        // 必须通过 context.commit() 触发某个 mutations 的函数才行        context.commit('add')      }, 1000)    }}

回到 Addition.vue文件中,增加一个+1 Async的按钮并增加点击事件:

这时点击+1 Async按钮,可以实现延迟1秒后+1的功能了。

触发 actions 异步任务时携带参数:

定义:

// 定义 Actionconst store = new Vuex.Store({  // ...省略其他代码  mutations: {    addN (state, step) {      state.count += step    },  },  actions: {    addNAsync (context, step) {      setTimeout(() => {        context.commit('addN', step)      }, 1000)    }  }})

触发:

// 触发 Actionmethods: {  handleAdd () {      // 在调用 dispatch 函数,触发 actions 时携带参数      this.$store.dispatch('addNAsync', 5)  }}

打开 store/index.js 文件,增加一个 addNAsync:

actions: {    addAsync (context) {      setTimeout(() => {        // 在 actions 中,不能直接修改 state 中的数据        // 必须通过 context.commit() 触发某个 mutations 的函数才行        context.commit('add')      }, 1000)    },    addNAsync (context, step) {      setTimeout(() => {        context.commit('addN', step)      }, 1000)    }}

回到 Addition.vue 文件中,增加一个+N Async的按钮并增加点击事件:

这时点击+N Async按钮,可以实现延迟1秒后+5的功能。

触发 actions 的第二种方式:

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

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

// 2.将指定的 actions 函数,映射为当前组件的 methods 函数methods: {  ...mapActions(['addAsync', 'addNAsync'])}

打开 store/index.js 文件,在 actions 增加一个 subAsync:

actions: {    addAsync (context) {      setTimeout(() => {        // 在 actions 中,不能直接修改 state 中的数据        // 必须通过 context.commit() 触发某个 mutations 的函数才行        context.commit('add')      }, 1000)    },    addNAsync (context, step) {      setTimeout(() => {        context.commit('addN', step)      }, 1000)    },    subAsync (context) {      setTimeout(() => {        context.commit('sub')      }, 1000)    }}

回到 Subtraction.vue 文件中,在增加一个-1 Async的按钮,并添加点击事件:

还有个更简单的方式:

这样实现的效果是一样的。

下面用同样的思路来实现-N的异步操作:

打开 store/index.js 文件,增加一个 subNAsync:

actions: {    subNAsync (context, step) {      setTimeout(() => {        context.commit('subN', step)      }, 1000)    }}

回到 Subtraction.vue 文件中,在增加一个-N Async的按钮:

这时点击-N Async按钮,可以实现延迟1秒后-3的功能。

(4)、Getters:

Getter 用于对 Store 中的数据进行加工处理形成新的数据。不会修改 state 里的源数据,只起到一个包装器的作用,将 state 里的数据变一种形式然后返回出来。
① Getter 可以对 Store 中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。
② Store 中数据发生变化,Getter 包装出来的数据也会跟着变化。

定义:

// 定义 Getterconst store = new Vuex.Store({  state: {    count: 0  },  getters: {    showNum: state => {      return '当前最新的数量是【'+ state.count +'】'    }  }})

使用 getters 的第一种方式:

this.$store.getters.名称

我们可以把文字的内容删除掉,然后用 getters 来替换:

打开 store/index.js 文件,定义getters:

getters: {    showNum (state) {      return '当前最新的数量是【' + state.count + '】'    }}

回到 Addition.vue 文件修改:

{{$store.getters.showNum}}

此时刷新页面,已经变为了 getters 中的内容,效果图:

使用 getters 的第二种方式:

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

打开 Subtraction.vue 文件修改:

{{showNum}}

效果图:

到此,相信大家对"VueX怎么安装使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 文件 函数 方式 按钮 组件 属性 事件 全局 状态 变化 内容 参数 就是 效果 处理 延迟 代码 任务 作用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 深圳市人人互联网科技有限公司 广东万易互联网科技有限公司惠州分公司 上海卓越科技互联网 苏州找大状互联网科技有限公司 盈实互联网科技 互联网下的科技发展 广州宏创互联网科技 互联网 视角下的科技创新 狮子座互联网科技培训 互联网科技公司介绍 深圳互联网科技怎么样 玖二柒互联网科技公司待遇 中盈科技互联网信息有限公司 小米互联网科技园设置 黑科技闪耀互联网之光 苏州铭阳互联网科技有限公司 工业互联网科技成果转化 互联网风格科技公司名称 青岛互联网科技园 苏州找大状互联网科技有限公司 高科技互联网 互联网与科技发展 贷财互联网科技 四川狮子座互联网科技 衡水科技产业互联网平台 金融科技与互联网金融相同和不同 世界互联网科技公司市值排名 互联网科技人工智能实验室 互联网公司黑科技创始人
0