千家信息网

VueX怎么安装使用

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,本篇内容主要讲解"VueX怎么安装使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"VueX怎么安装使用"吧!1、安装vuex依赖包npm install
千家信息网最后更新 2024年11月28日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安全错误 数据库的锁怎样保障安全 2019全国区域数据库 管网络安全的法律部门 手游app连接服务器失败 2k22老是连接不上服务器怎么回事 软件开发专业就业靠谱吗 无锡手机软件开发管理 辽宁信息化软件开发厂家现货 山东万创网络技术有限公司 算法工程师与软件开发的区别 如何用r读入文本数据库 服务器分区管理工具下载 沈阳供饭的软件开发公司 服务器里面可以安装模拟器吗 ui设计软件开发公司 物理机服务器多少钱 池州管理软件开发平台 大连易乾网络技术开发 城市网络安全工作计划 易于使用的郑州直销软件开发 戴尔服务器配置远程管理接口 中小学生网络安全教育回放 领科网络技术有限公司 vc 软件开发案例视频教程 电脑玩手机吃鸡怎么连不上服务器 戴尔服务器t340闪黄灯 系统的服务对象和服务器 网络安全工程培训基础 池州管理软件开发平台 广州学什么软件开发 网络安全手抄报模板图
0