vue vuex整合

Vue-Vuex整合

安装vuex插件依赖

在vue ui中安装vuex依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AbSKN9FJ-1604372888242)(media/5eb681a52839e23a362aee9eeb1aa5f7.png)]

安装成功后查看package.json中存在依赖项vuex

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8JRT6H35-1604372888246)(media/76b49d91d3b9aeeb066e34c15f61b7a7.png)]

或者直接运行命令

npm install vuex --save

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jt2g2PGl-1604372888248)(media/fb40a2bafcf1628d8e822fb19d405ea2.png)]

为支持低版本的浏览器,可以添加依赖polyfill

新增vuex文件

在src下新建store文件夹,添加index.js文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J30DXqsf-1604372888251)(media/1fbddd9f5da8afc2631d56f42d1b04a9.png)]

导入vue及vuex

import Vue from 'vue'

import Vuex from 'vuex'

//模块化工程使用use对vux进行引用

Vue.use(Vuex)

//创建Store对象并导出

export default new Vuex.Store({

  state: {

  },

  mutations: {

  },

  actions: {

  },

  modules: {

  }

})

Main.js中全局调用vuex

导入在router/index.js中导出的router对象

import store from ‘./store’

创建vue时引入全局store

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2b0wlz8E-1604372888252)(media/10dd69303298fae04ec3a52b0aaf5f21.png)]

New vue中的store中mount至id为app的组件

每一个 Vuex 应用的核心就是
store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态
(state)。Vuex 和单纯的全局对象有以下两点不同:

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store
中的状态发生变化,那么相应的组件也会相应地得到高效更新。

你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交
(commit)
mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。每一个
Vuex 应用的核心就是
store(仓库)。“store”基本上就是一个容器,它包含着应用中大部分的状态
(state)
。Vuex 和单纯的全局对象有以下两点不同:

  1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store
    中的状态发生变化,那么相应的组件也会相应地得到高效更新。

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

Store管理

在/store/index.js文件中添加需要进行状态管理的模块

Getters为所有store state的获取对象统一处理

其他每个模块分别单独处理

state,

mutations,

actions

modules分割

index,js处理所有modules

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkN3BtRy-1604372888254)(media/fa52560f523ac41ec793c5d3e408ee3c.png)]

App注册为带命名空间的模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zQ1Uweuu-1604372888255)(media/588686dae5b4280c566321199dea1a21.png)]

State调用

在user.js中注册user相关的state

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WQEJGqJv-1604372888256)(media/bc7d12c51bd456a0e550fbed92188bed.png)]

组件需要获取多个状态的时候可以使用mapstate辅助函数

在setting,js中定义页面相关的显示信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LL1pReoL-1604372888257)(media/8d61c95cb33b30c2a5664222b8dd38f0.png)]

在layout/index.vue中获取settings中的state

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pRiKSPWk-1604372888258)(media/0bf30b2f6374d3bcabe7671f2afb17c8.png)]

Getters调用

在getters.js中注册getters 并导出为对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jezGdnT1-1604372888259)(media/bfb41bca4a7c68fb882e3ad15a0d9ea3.png)]

Getter会暴露为store.getters对象

通过属性,获取单个getters信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j8xQc5yL-1604372888260)(media/5817d49567e87ec6c2b353ac6759e1bd.png)]

获取多个getters中的信息

需要使用mapGetters 来实现

导入mapGetters

import { mapGetters } from 'vuex'

计算属性中引入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZQtJHbd-1604372888261)(media/f4c8b0d7e96d8c690b046a379f5d95e6.png)]

Mutations调用

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation

在user.js中定义mutation

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GeXqj80a-1604372888262)(media/69d74afd222369e2cd1220498d413dac.png)]

调用 commit方法,更新状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eZd9MLyO-1604372888263)(media/bbd3a56d8922edfdfa7c524f3c462673.png)]

commit(‘SET_ROLES’, res.roles)

第一个参数为定义的mutation,第二个参数为变化值res.roles

Action调用

在user.js中注册action Login

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TTTnLtqI-1604372888264)(media/b88fc4a1a2e1ebb60ef370856a3b7e99.png)]

Action 提交的是 mutation,而不是直接变更状态。

Action 可以包含任意异步操作。

Action返回为Promise对象,resolve成功,reject失败

在登录组件中使用 this.$store.dispatch(‘xxx’) 分发action

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NgkjbACg-1604372888265)(media/0c618c21f35235ab0acd1d8e7149d9ad.png)]

成功返回则跳转登录

失败返回抓取异常,获取错误码

Vuex其他相关可以查看官网

Vuex官网地址

https://vuex.vuejs.org/zh/guide/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Li63rKBX-1604372888267)(media/1dbd45ae072bb8b0f86a3c2d3cc92d6e.png)]

  • state,驱动应用的数据源;

  • view,以声明方式将 state 映射到视图;

  • actions,响应在 view 上的用户输入导致的状态变化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LVGmA1wO-1604372888268)(media/898082fc9165313df851001beeda6156.png)]
/guide/>

[外链图片转存中…(img-Li63rKBX-1604372888267)]

  • state,驱动应用的数据源;

  • view,以声明方式将 state 映射到视图;

  • actions,响应在 view 上的用户输入导致的状态变化。

[外链图片转存中...(img-LVGmA1wO-1604372888268)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忙碌的菠萝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值